3

インターネットから情報を取得したいのですが、python mechanize モジュールを使用してこれを行いますが、リクエスト中にペイロードを投稿する必要があります。多くの方法を試しましたが、まだ失敗しました。私を助けてください。
ここに私がつかむ投稿データがあります:

リクエスト

URL:xxxxxx
リクエスト方法:POST
ステータスコード:200 OK

リクエストヘッダー

**Accept:application/json, text/javascript, */*; q=0.01**  
Accept-Charset:gb18030,utf-8;q=0.7,*;q=0.3  
Accept-Encoding:gzip,deflate,sdch  
Accept-Language:en-US,en;q=0.8,zh-CN;q=0.6,zh;q=0.4  
Connection:keep-alive  
Content-Length:52  
**Content-Type:application/json; charset=UTF-8**  
Cookie:ASP.NET_SessionId: sanntewiq5cz5uq1y0l5g3gy  
Host:xxx.xxx.xxx.xxx:8500  
Origin:xxx.xxx.xxx.xxx:8500  
User-Agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.17 (KHTML, like Gecko)  Chrome/24.0.1312.57 Safari/537.17  
**X-Requested-With:XMLHttpRequest**

リクエストペイロード

{dispatchorderid:"966A48E572624F2FB2E99F371C232729"}

ここに私のコードがあります:

br = mechanize.Browser()
payload = {'dispatchorderid': "966A48E572624F2FB2E99F371C232729"}
json_data = json.dumps(payload)
br.addheaders = [('Content-Type', 'application/json; charset=UTF-8'),
                ('Accept', 'application/json, text/javascript, */*; q=0.01'),
                ('X-Requested-With', 'XMLHttpRequest')]
br.set_debug_http(True)
res = br.open(url, json_data)

このスクリプトを実行すると、送信情報は次のようになります。

send: 'POST /DealerManage/AddDispatchorder.aspx/GetDispatchorderEntityList HTTP/1.1\r\nAccept-Encoding: identity\r\nContent-Length: 55
Connection: close
Accept: application/json, text/javascript, / ; q=0.01
ホスト: 125.64.15.71:8500
Cookie: ASP.NET_SessionId=34dyw50d3omel2vbsvm41zwp
X-Requested-With: XMLHttpRequest
*コンテンツ タイプ: application/x-www-form-urlencoded'



Content-Type が「application/json;」に変更されない理由 文字セット=UTF-8'?

4

1 に答える 1

-1

この質問は非常に古いものですが、最近ではrequestsパッケージを使用する方がはるかに簡単です:

import requests
head = { 'Content-Type': 'application/json; charset=UTF-8',
         'Accept': 'application/json, text/javascript, */*; q=0.01',
         'X-Requested-With': 'XMLHttpRequest' }
data = dict(dispatchorderid="966A48E572624F2FB2E99F371C232729")
response = requests.post(url, json.dumps(data), headers=head)

print response.text
于 2016-01-05T01:59:57.377 に答える