2017-10-09 134 views
0

我想在python中獲得POST Web服務數據。爲此,我試過如下:如何在python中發送POST請求並獲得正確的json響應?

import requests 
import json 

headers = {'content-type': 'application/json','charset': 'utf-8'} 
url = 'https://a.b.c.com/count/WebService.asmx/ReadJSON' 
data = {'tick': '123456A123456B'} 
response = requests.post(url, data=json.dumps(data), headers=headers) 
print response.status_code 
print response.text 

以上代碼的輸出:

200 
{"a":""} 

但實際上,鍵 「一」 有一定的價值這我沒有收到。我不明白它給我的狀態代碼爲200,即OK,那麼爲什麼我無法獲得正確的JSON響應。我在代碼中遺漏了什麼嗎?

+0

使用'response.json()',而不是'response.text',你不需要轉儲字典字符串,可以把它當作是 –

+0

如果我過去了,響應= requests.post (url,data = data,headers = headers)我得到{u'StackTrace':u'',u'Message':u'There處理請求時出錯。',u'ExceptionType':u'' }錯誤。 – kit

回答

2

您應該使用json=data在請求中傳遞json,但不能手動修改標頭,並且如果確定它是肯定的,您應該使用response.json()來獲取json結果。

import requests 

headers = {'charset': 'utf-8'} 
url = 'https://a.b.c.com/count/WebService.asmx/ReadJSON' 
data = {'tick': '123456A123456B'} 
response = requests.post(url, json=data, headers=headers) 
print response.status_code 
print response.json() 
+0

@ Sraw-請參閱上面的評論。我試過你的解決方案,它不適合我。我得到的答案與答案中顯示的相同。 – kit

+0

@kit你確定你正在使用'json = data'而不是'data = data'嗎? – Sraw

+0

@ Sraw-是的。我只使用json =數據。我將其從data = data更改爲json = data。 – kit

相關問題