この問題は私を夢中にするようなものです。 公開WebサイトでAPIを管理するための非常に単純なPython 3スクリプトを作成しています。 私はカールではできますが、ピトンではできません。 はこれが機能しているだけでテスト複製curlコマンドpython 3 urllibリクエストAPI
のために、私の実環境でのライブラリやカールを要求いずれかを使用することはできません:
curl -d "credential_0=XXXX&credential_1=XXXXXX" -c cookiefile.txt https://XXXXXXXXXXXXXXX/LOGIN
curl -d 'json={"devices" : ["00:1A:1E:29:73:B2","00:1A:1E:29:73:B2"]}' -b cookiefile.txt -v https://XXXXXXXXX/api-path --trace-ascii /dev/stdout
を、我々はカールデバッグでこれを見ることができます:
はヘッダを送信し、 298バイト(0x12a)
0000:POST/API-パスHTTP/1.1
0034:ホスト:XXXXXXXXXXXXXXXX
0056:ユーザーエージェント:/ 7.47.0
006fカール:受け入れ:/
007C:クッキー:csrf_token = 751b6bd9-0290-496b-820E-XXXXXXXX。セッション 00bc:= XXXXXX-6d29-4cf9-8907-XXXXXXXXXXXX
00E3:のContent-Length:60
00f7:コンテンツタイプ:application/x-www-form-urlencodedで
0128: =>送信データ、60バイト(0x3c)
0000:json = {"devices":["00:1A:1E:29:73:B2"、 "00:1A:1E:29:73: B2 "]} ==情報:アップロード完了:60バイト中60アップロード
このi 2番目のリクエストを複製するPythonコード(問題のあるもの)
string_query={"devices" : [ "34:FC:B9:CE:14:7E","00:1A:1E:29:73:B2" ]}
jsonbody_url=urllib.parse.urlencode(string_query)
jsonbody_url=jsonbody_url.encode("utf-8")
req=urllib.request.Request(url,data=jsonbody_url,headers={"Cookie" :
cookie,"Content-Type": "application/x-www-form-urlencoded","User-
Agent":"curl/7.47.0","charset":"UTF-8","Content-
length":len(jsonbody_url),
"Connection": "Keep-Alive"},method='POST')
そして、サーバーはJsonコンテンツを完全に無視しています。 他のすべてが動作しています、同じAPIのログインと他のURLパラメータ
アイデア?
こんにちは、すでに単なるサーバからの応答(私が言ったように私はそれを作業environemntを使用することはできません)が、運を取得するために要求モジュールを試してみました。サーバーはjsonの入力を無視しています。私は、サーバーAPIに問題があると思っています。ありがとう – pedrolp
urllibのみ使用できますか? –
APIのドキュメントまたはエンドポイントを提供できる場合は、別の解決策がある可能性があります。 –