2016-08-30 15 views
0

ん要求:パイソン - 作品カール、libには、これはコマンドラインからの作品ではない

curl -H "Content-Type: application/json" -X POST -d '<my data>' http://my_user:[email protected]_url 

これはPythonスクリプトから動作しません。

res=requests.post(
    'http://my_user:[email protected]_url', 
    json='<my data>') 

何が起こることは、それが当たっていますサーバーは認証しません。 REST APIが

\ジャンゴ残りのフレームワークで構築された、と私は

{"detail":"Invalid username/password."} 

http://www.django-rest-framework.org/tutorial/4-authentication-and-permissions/

パスワード(これらの特殊文字の%を含み得るされ、それは二重のバックスラッシュですので、私は、\をエスケープ。私も試してみました文字列の前にR、及び4つのバックスラッシュ。

と私はあまりにも異なるエスケープとauth=('my_user','my_pass')と試みた。

私はhttp://curl.trillworks.com/まで走りましたが、それでも動作しませんでした。

明日はパスワードを何か簡単なものに変更してテストします。

これがうまくいかない場合、私はあきらめて、最後にそのcurlコマンドを実行するbashスクリプトを追加します。

+0

認証情報を渡すためにauth paramを使用します。 –

+0

'auth = ...'を使うときに、何をデータとして渡していますか? –

答えて

0

。私も文字列の と4つのバックスラッシュでrを試しました。

curlコマンドの\はかっこをエスケープすることでした。パスワードの一部ではありませんでした。

私はそれを削除して動作します。

2

あなたはこのようrequestsライブラリを使用して認証を設定してみてくださいする必要があります:私は\をエスケープするので、それは二重のバックスラッシュだ

from requests.auth import HTTPBasicAuth 

response = requests.post(url, json=payload, auth=HTTPBasicAuth('user', 'pass')) 

http://docs.python-requests.org/en/master/user/authentication/#basic-authentication

+0

'auth =( 'user'、 'pass')'は、HTTPBasicAuthの読み込みと同じで、OPが既に質問にしたがって試したので、違いはありません。 –

+0

はい、どちらも機能しました。 curlステートメントのバックスラッシュは、パスワードそのものではなく、括弧をエスケープすることでした。 – steve76

関連する問題