2016-06-23 14 views
0

Pythonのリクエストを使用してSynchroteam APIの基本的な実装を進めようとしています。私はコンセプトの証明としてのcURLを使用して接続を確立し、私が望んでいたすべてのデータを取得することができたが、私は私の資格情報を使用してサイトに入ることができています要求を使用して、私が得るすべては次のとおりです。Pythonリクエストを使用しているのにCURLを使用していないのに500エラーが発生するのはなぜですか?

500 
text/html; charset=utf-8 
https://apis.synchroteam.com/Api/v1/user/list 

<!DOCTYPE html> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
    <title>Error</title> 
</head> 
<body> 
    <h2> 
     An error occurred while processing your request. 
    </h2> 
</body> 
</html> 

Process finished with exit code 0 

このラインすべてとカールを使用している場合は、正しい情報を返します。Pythonコードの

curl -u domain:APIKEY -H "Accept: application/json" -H "Content-Type: application/json" https://apis.synchroteam.com/Api/v1/user/List 

私の小さなビットはこれです:

import requests 


apiurl = 'https://apis.synchroteam.com/Api/v1/user/list' 
login = ("domain", "APIKEY") 
headers = {'Content-Type': 'application/json'} 

def run(): 
    r = requests.get(apiurl, auth=login, headers=headers) 

    print r.status_code 
    print r.headers['Content-type'] 
    print r.url 
    print r.text 

run() 

Synchroteamドキュメントのすべては、PHの例を持っていますP、しかし、なぜ私はPythonを使用することができないだろう何らかの理由を見ることができません。 ドキュメントは次のとおりです:http://api.synchroteam.com/rest.php

洞察力はすばらしいと思います。 ありがとうございます。

+0

「Accept:」ヘッダーも設定してみましたか? – ig0774

+0

私はしていません。私はそれを受け入れるように設定する必要があります任意のアイデア?私は現在何が掛かっているのか分かりません。申し訳ありませんが、基本的な質問は、私の最初の任意のHTTPまたは外部のAPIを使用して –

+0

更新:私はこれを試していなかった。今はこれがカールラインに似ていることが分かります。どうもありがとうございます、これは何時間も気になりました。 –

答えて

0

これはPostmanを使用して生成するPythonコードです。私はそれがあなたを助けると確信しています!

import requests 

url = "https://apis.synchroteam.com/Api/v1/User/list" 

payload = "{\n \"status\":\"1\"\n}" 
headers = { 
'content-type': "application/json", 
'accept': "application/json", 
'authorization': "Basic ZGVtbzoxMjEyOThucDIwMDM=", 
'cache-control': "no-cache", 
'postman-token': "1a3839b6-db5b-0c07-be1a-2816f491476c" 
} 

response = requests.request("GET", url, data=payload, headers=headers) 

print(response.text) 

Auth!
ニック

+0

それは質問についての手がかりを与えません。 – lulyon

+0

応答のおかげで、私はig0774の助けを借りてこれを理解することができました。私が必要としていたのは、ヘッダー= {'Accept': 'application/json'}でした。私は、いくつかのより高度なヘッダーを後で行うことを検討しなければならないかもしれません。 –

関連する問題