2016-04-02 42 views
0

我正在尋找使用請求類從Web獲取數據,然後將更改發佈到名稱空間XML並加載備份。請求<響應[500]>

我能夠通過登錄,並獲取使用請求數據:

data_req = requests.get(proj_data_url, headers=headers, auth=(_user, _pw)) 

這裏頭是{'X-ApiKey': A-ApiKey, 'Authorization': Authorization}

data_req<Response [200]>

然後我用

data_tree = xml.etree.ElementTree.fromstring(data_req.content) 

轉換成和succ essfully進行更改data_tree

然後我用

data_set = xml.etree.ElementTree.tostring(data_tree) 

轉換回一個字符串。

我再嘗試通過張貼改變備份:

_response = requests.post(proj_data_url, data=data_set, headers=headers, auth=(_user, _pw)) 

但收到_response = <Response [500]>,這顯然是一個服務器錯誤。

任何人都可以幫忙嗎?

+0

快速跟進的問題做到這一點: –

+0

的fromstring()返回一個元素實例。 tostring()是否創建了XML的正確字符串表示形式,以便將元素髮回備份?這不需要是一個XML樹實例的字符串表示嗎? –

回答

0

因此,不知道服務器或發佈的XML,任何人都無法幫助解決服務器錯誤。

500意味着你正在與之交談的應用程序沒有處理內部錯誤。例如,如果應用程序是用Python編寫的,那麼500可能是代碼中未處理的異常的結果。

沒有更多的細節,你應該努力聯繫網站管理員尋求幫助。他們可以檢查他們的日誌,修復他們的應用程序,並告訴你如何正確發送請求到他們的服務。

您可能會嘗試做的一件事是爲您的POST請求設置內容類型。您可以通過更新headers像這樣

headers['Content-Type'] = 'text/xml' # or 'application/xml' 

(見this answer以確定哪些應該送)

+0

當您運行您的建議時,我得到400響應。我打算明天聯繫網站管理員,並會跟進。 header ['Content-Type'] ='text/xml'#或'application/xml' _response = requests.post(proj_data_url,data = data_set,headers = headers,auth =(_user,_pw)) –

+0

已經確認正確的'Content-Type'被髮布爲'application/xml',而tostring()編碼正確的是'UTF-8'。 –

+0

所以400比500好,只是因爲它意味着你所做的任何事情都是錯誤的,並且不會導致服務器崩潰。儘管沒有更多的細節,但我無法幫助你弄清楚你的請求有哪些錯誤,所以你應該繼續與網站管理員交談。 –