제목 | python으로 JSON을 php로 post하는 과정에서 질문입니다. | ||
---|---|---|---|
글쓴이 | 브레인토스트 | 작성시각 | 2016/06/17 19:47:18 |
|
|||
구글링해서 나오는 좋은 코드들을 써도 해결이 안되서 여기에 또 .. 질문을 드립니다.
일단 제가 보내려는 json 구조는 이렇게 생겼습니다.
"student":{ "instructor":1, "email":"abc@gmail.com", "name":"아무개", "phone":"01000000000", "student":5 }
이 형태로 postman으로 패킷을 보내게 되면 정상적으로 결과 값이 잘 나옵니다. 그런데 python 코드만 사용하면 php 코드에서 전송된 데이터를 읽지를 못하는건지 받지를 못하는건지 모르겠습니다. 못받는 것 같긴합니다만. 파이썬 코드는 이렇습니다.
import httplib, urllib params={"student":{"email":'abc@abc.com',"name":"아무개","instructor":1,"phone":"01000000000","student":5}} params=urllib.urlencode(params) headers={"Content-type":"application/x-www-form-urlencoded","Accept": "text/plain"} import urllib2 request=urllib2.Request('local test address',params) response = urllib2.urlopen(request) data=response.read() print data
이런 코드인데요. 웃긴거는 다른 php 파일에 {"id":1,"index":1} 이런 단순한 json은 잘받아서 결과가 나옵니다;; 왜 이러는지 정말 미치겠네요 ㅠ python으로 급하게 작성해야해서 갑갑합니다. 도움 좀 부탁드리겠습니다. 물론 같은 json형태로 postman에서 php 파일로 전송하면 모든 로직이 정상처리됩니다. |
|||
다음글 | view에서 객체 배열을 어떻게 사용하는지;; (4) | ||
이전글 | 왕초보가 고수분들께 질문올립니다.. (6) | ||
kaido
/
2016/06/17 23:48:45 /
추천
1
|
브레인토스트
/
2016/06/19 16:17:26 /
추천
0
말씀하신대로 urlencode와 그 전을 echo로 찍어보니 상당히 형태가 다르더라구요. 그래서 눈으로 봤을 때 더 json 데이터에 가까워 보이는 urlencode를 지우고 바로 post를 해보니 프로그램 자체가 오류가 납니다 ..
|
한대승(불의회상)
/
2016/06/20 08:43:10 /
추천
1
php로 받았을때 json_decode 하기전의 문자열이 어떤 형태인지 부터 확인 해 보세요.
|
알브레드
/
2016/06/21 09:56:21 /
추천
0
json 코드는 이런식으로 겉에 중괄호를 싸야 하지 않나요? {"student":{ "instructor":1, "email":"abc@gmail.com", "name":"아무개", "phone":"01000000000", "student":5 } }
---------------------------------- 아래 코드를 테스트 해보세요.
$a = '{"student":{ "instructor":1, "email":"abc@gmail.com", "name":"아무개", "phone":"01000000000", "student":5 } }'; $b = '"student":{ "instructor":1, "email":"abc@gmail.com", "name":"아무개", "phone":"01000000000", "student":5 }'; var_dump(json_decode($a)); var_dump(json_decode($b));
|
브레인토스트
/
2016/06/21 22:37:56 /
추천
0
직장 동료분에게 물어보니 python할때 자기도 저 앞에 student도 python구조에 해당하는 줄 알았는데 post key값을 student로 하고 나머지 데이터를 키의 값으로 보내줘야 한다더군요. 그래서 저런식으로 urlencode시키니 제대로 동작했습니다. |
브레인토스트
/
2016/06/22 15:00:59 /
추천
0
json_data = json.dumps(params) 이렇게 만들어서 urlencode하고 전송했습니다. |
python 으로 json 을 보내보지는 않았지만...
예측하는 대로 라면
urlencode 부분이 문제 아닐까요?
저도 암호 관련으로 파라메터 전체를 urlencode 하고 다시 decodeing 하는 과정에서 미스가 발생 하더군요.
한번 체크해보세요.