2016-07-15 63 views
0

我想從我的api返回一個json對象。使用python的請求框架從api獲取json對象。內容類型在運行時返回application/json,因此內容爲json。Python使用請求來執行GET來接收應用程序/ json對象

url = 'theUrl' 
response = requests.get(url) 
print(response.headers['content-type']) 
data = json.load(response) 

運行時返回腳本:

提高ValueError異常( 「無JSON對象可以解碼」) ValueError異常:無JSON對象可以被解碼。

執行請求時,還會出現另一個問題api會引發錯誤。 API的錯誤日誌產生的

message.internal.WriterInterceptorExecutor錯誤:沒有找到

我已經嘗試了各種不同的方法來此,但似乎無法接受的媒體類型= {text/html的} MessageBodyWriter json對象。任何人遇到類似問題?

+1

你的意思是有'數據= json.loads(response.json)'? – ritlew

回答

0

最後兩行是沒有意義的。您撥打response.json(),然後忽略返回值,然後嘗試在響應本身上調用json.loads(),而不是實際的響應內容。

而不是那兩條線,只是做data = response.json()已經返回反序列化的數據。

+0

抱歉,當我寫這個問題時,第一個電話是一個錯字。我添加了 data = json.loads(response.json) 獲得一個新的錯誤,但它更有幫助。這很新鮮。謝謝你們 – Zoidburg

0

requests.get的返回值不是一個字符串,而是一個對象。響應主體是在財產的.text,從而:

data = json.loads(response.text) 

和你做

+0

從現在的API收到此錯誤: MessageBodyWriter未找到媒體類型=應用程序/ XML, 你們有很多的幫助,雖然相信我可以計算自己休息感謝您的投入和歡呼聲@Daniel羅斯曼 – Zoidburg