2015-09-01 39 views
-2

我是Python新手。我有一個代碼都在蟒蛇3.x &蟒蛇2.x(其實,它是一個已經用2.x編寫的庫)。我從python 3.x中調用python 2.x中的函數。該庫返回一個HTTPResponse(來自python 2.x)。我無法解析我的代碼中的HTTPResponse(在Python 3.x中)。關於解析在Python 3.x中從python 2.x返回的HTTPResponse

我的要求是:在Python 2.x的

jsonData = {'string': post_message_data['Message']} 

url = "%s/testurl/" % (settings.STIX_API_URL) 

response = requests.post(url, jsonData) 

處理請求

在蟒2.x的我處理這個請求&發送回HTTP響應,其是純文本答覆從電子郵件解析。

htmldata = request.body 

strdata = json.loads(htmldata) 
html = strdata['string'] 

reply = quotations.extract_from(html, 'text/html') 

reply = quotations.extract_from_html(html) 

return HttpResponse(json.dumps({'reply':reply}), mimetype='application/json') 

現在我的問題是 「如何讓所謂的3.X的功能JSON格式的JSON數據」

我已經試過response.read(),response.readall(),響應。內容。每次得到不同的錯誤。

+0

爲什麼不把整個代碼寫入一個版本?應該爲你節省很多麻煩。 – Kevin

+0

這裏的HttpResponse對象是什麼?這是一個Django對象嗎? –

+0

爲什麼不直接使用'response.json()'而不是自己解碼JSON響應呢? –

回答

0

從請求發送JSON數據時出現問題。它的格式不正確。這就是爲什麼在HTTPResponse對象我得到500內部服務器錯誤(沒有JSON可以解碼)。當我檢查response.content

我發現這個錯誤之後,我正確地編碼JSON並從響應對象得到正確的JSON格式的輸出。像Martijn說的那樣使用response.json()

0

Python的版本有絕對沒有這個問題。

您從requests.post調用中獲得的響應具有json()方法,該方法將內容作爲解析的Python數據結構返回。

+0

Hie Daniel,你是否想這樣說 –

+0

reply = json.dumps(response.json()) –

+0

不,如果我的意思是說我會說。 「響應」從哪裏來?你描述它的問題在客戶端;這就是你需要訪問json的地方,當然? –