2017-01-05 6 views
0

APIに.post()のリクエストでxmlファイルをPOSTできない理由をデバッグしようとしています。次wgetコマンドが正常に動作します:PythonリクエストPost XMLファイルが機能しない

wget -vv --no-check-certificate --post-file dynobjadd.xml \ 
"https://1.1.1.1/api/?type=user-id&action=set&key=$MYSUPERSECRETKEY=&file-name=dynobjadd.xml&client=wget" \ 
--no-http-keep-alive -O response.out 

成功wgetの出力:

... 
URI encoding = ‘UTF-8’ 
--2017-01-05 13:21:11-- https://1.1.1.1/api/?type=user-id&action=set&key=$MYSUPERSECRETKEY=&file-name=dynobjadd.xml&client=wget 
Certificates loaded: 165 
Connecting to 1.1.1.1:443... connected. 
... 
---request begin--- 
POST https://1.1.1.1/api/?type=user-id&action=set&key=$MYSUPERSECRETKEY=&file-name=dynobjadd.xml&client=wget HTTP/1.1 
User-Agent: Wget/1.18 (linux-gnu) 
Accept: */* 
Accept-Encoding: identity 
Host: 1.1.1.1 
Connection: Close 
Content-Type: application/x-www-form-urlencoded 
Content-Length: 175 

---request end--- 
[writing BODY file dynobjadd.xml ... done] 
HTTP request sent, awaiting response... 
---response begin--- 
HTTP/1.1 200 OK 
Server: 
Date: Thu, 05 Jan 2017 20:21:12 GMT 
Content-Type: application/xml; charset=UTF-8 
Content-Length: 255 
Connection: close 
ETag: "437cf-12b-56e39c36" 
Pragma: no-cache 
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 
Expires: Thu, 19 Nov 1981 08:52:00 GMT 
X-FRAME-OPTIONS: SAMEORIGIN 
Set-Cookie: PHPSESSID=123123; path=/; secure; HttpOnly 

---response end--- 
200 OK 

Pythonのコード私がしようとしています:

xml = open('dynobjadd.xml').read() 



url = 'https://1.1.1.1/api/?type=user-id&action=set&key=$MYSUPERSECRETKEY=&file-name=dynobjadd.xml&client=requests' 
r = requests.post(url, data=xml, verify=False ) 

r.content()出力:

<response status = 'error' code = '400'><result><msg>No file uploaded</msg></result></response> 

答えて

関連する問題