2017-06-12 9 views
0

投稿時に認証する必要があるため、JSON情報をurlencodeできましたが、私のurlencoded情報をPOSTできません。Pythonリクエストモジュール:URLコード化された情報の認証と投稿

どうすればいいですか?次のように

私のコードは次のとおりです。

import urllib 
import pycurl 
import certifi 
import json 
import requests 
from requests.auth import HTTPBasicAuth 

requests.post('https://website.com/update/', auth=('user', 'pass')) 

uri = 'https://website.com/update/' 
params = {} 
data= {"simId":760590802,"changeType":2,"targetValue":000307,"effectiveDate":'null'} 
params["data"] = json.dumps(data) 
r = requests.post(uri, data=params) 
print r.text 

あなたが見ることができるように、私は私の情報を投稿することができています。しかし、そうする際に、私は完全にそうする前に自分自身を認証する必要があります。

リクエストモジュール認証ページは閲覧されていますが、これらの認証方法のいずれも機能していません。これはpycurlで動作しますが、ユーザー名とパスワードは設定できますが、リクエストモジュールでどのようにすればいいですか?

+1

どの認証方法を使用する必要がありますか? –

+0

@ArpitSolanki基本とダイジェスト;彼らはまだ私に認証エラーを与えるので、両方とも動作しません。元の投稿を編集しました。 – juiceb0xk

+0

@ juiceb0xkあなたが得ているエラーは何ですか?正しいかどうかを 'get'と' post'の間で混同していることに注意してください。 – moritzg

答えて

0

ユーザー名とパスワードを言及しているため、認証方法は、最も可能性の高い、容易にこのようなrequestsで行うことができますHTTP基本認証です:アプリケーションがすでにできフロントエンドのいくつかの並べ替えを持っている場合

from requests.auth import HTTPBasicAuth 
requests.post('https://website.com/update/', auth=HTTPBasicAuth('user', 'pass')) 
+0

申し訳ありません、元の投稿を編集しました。私は基本認証とダイジェスト認証の両方の方法を試しました。どちらもまだ私に認証エラーを与えるので、どちらもうまくいきません。 – juiceb0xk

+0

requests.postとrequests.getは両方とも機能しません。 – juiceb0xk

0

ブラウザーでアクセスし、Chromeでデベロッパーツールを試して、認証がどのように行われているか(メソッド、パラメーター)を確認し、それを複製しようとします。

その後、リクエストセッションオブジェクトを使用する可能性が高くなります。これは、あなたが一度だけ認証するのに役立ちます。

http://docs.python-requests.org/en/v1.0.4/user/advanced/#session-objects

を開き、新しいセッション:

s = requests.Session()

セッションを使用して認証を行います。これは一例であり、あなたはしかし、あなたのアプリケーションのサポートを、あなたの認証を行うことができます(例えばPOSTリクエスト)

s.auth = ('user', 'pass')

あなたが任意のセッション設定(クッキー、ヘッダなど)を持っている場合は、それらを追加する必要がありますあなたのセッション。

s.headers.update({'x-test': 'true'})

関連する問題