我有一个项目,我正在努力,我需要,我正在尝试发送一个json请求。我收到一个错误,我不知道它与我要发送的请求有什么关系。
以下是错误:
JSONDecodeError at /setup_profile/
Expecting value: line 1 column 1 (char 0)
Request Method: POST
Request URL: http://127.0.0.1:8000/setup_profile/
Django Version: 1.8.6
Exception Type: JSONDecodeError
Exception Value:
Expecting value: line 1 column 1 (char 0)
Exception Location: C:\Users\OmarJandali\AppData\Local\Programs\Python\Python36\lib\site-packages\simplejson\scanner.py in _scan_once, line 118
Python Executable: C:\Users\OmarJandali\AppData\Local\Programs\Python\Python36\python.exe
Python Version: 3.6.1
Python Path:
['C:\\Users\\OmarJandali\\Desktop\\opentab\\opentab',
'C:\\Users\\OmarJandali\\AppData\\Local\\Programs\\Python\\Python36\\python36.zip',
'C:\\Users\\OmarJandali\\AppData\\Local\\Programs\\Python\\Python36\\DLLs',
'C:\\Users\\OmarJandali\\AppData\\Local\\Programs\\Python\\Python36\\lib',
'C:\\Users\\OmarJandali\\AppData\\Local\\Programs\\Python\\Python36',
'C:\\Users\\OmarJandali\\AppData\\Local\\Programs\\Python\\Python36\\lib\\site-packages']
以下是我要发送的请求:
def createUserSynapse(request):
url = 'http://uat-api.synapsefi.com'
headers = {
'X-SP-GATEWAY' : 'client_id_asdfeavea561va9685e1gre5ara|client_secret_4651av5sa1edgvawegv1a6we1v5a6s51gv',
'X-SP-USER-IP' : '127.0.0.1',
'X-SP-USER' : '| ge85a41v8e16v1a618gea164g65',
'Contant-Type' : 'application/json',
}
payload = {
"logins":[
{
"email":"test@test.com",
}
],
"phone_numbers":[
"123.456.7890",
"test@test.com",
],
"legal_names":[
"Test name",
],
"extras":{
"supp_id":"asdfe515641e56wg",
"cip_tag":12,
"is_business":False,
}
}
print(url)
print(headers)
print(payload)
call = requests.post(url, json=payload, headers=headers)
# response = json.loads(call.text)
call = call.json()
print (call)
print(call.content)
return render(request, 'tabs/create_user_synapse.html', call)
这是回溯,我认为错误将是call = call.json()命令的位置或者它上面的行与实际响应
Traceback Switch to copy-and-paste view
C:\Users\OmarJandali\AppData\Local\Programs\Python\Python36\lib\site-packages\django\core\handlers\base.py in get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs) ...
▶ Local vars
C:\Users\OmarJandali\Desktop\opentab\opentab\tab\views.py in profileSetup
createUserSynapse(request) ...
▶ Local vars
C:\Users\OmarJandali\Desktop\opentab\opentab\tab\views.py in createUserSynapse
call = call.json() ...
▶ Local vars
C:\Users\OmarJandali\AppData\Local\Programs\Python\Python36\lib\site-packages\requests\models.py in json
return complexjson.loads(self.text, **kwargs) ...
▶ Local vars
C:\Users\OmarJandali\AppData\Local\Programs\Python\Python36\lib\site-packages\simplejson\__init__.py in loads
return _default_decoder.decode(s) ...
▶ Local vars
C:\Users\OmarJandali\AppData\Local\Programs\Python\Python36\lib\site-packages\simplejson\decoder.py in decode
obj, end = self.raw_decode(s) ...
▶ Local vars
C:\Users\OmarJandali\AppData\Local\Programs\Python\Python36\lib\site-packages\simplejson\decoder.py in raw_decode
return self.scan_once(s, idx=_w(s, idx).end()) ...
▶ Local vars
C:\Users\OmarJandali\AppData\Local\Programs\Python\Python36\lib\site-packages\simplejson\scanner.py in scan_once
return _scan_once(string, idx) ...
▶ Local vars
C:\Users\OmarJandali\AppData\Local\Programs\Python\Python36\lib\site-packages\simplejson\scanner.py in _scan_once
raise JSONDecodeError(errmsg, string, idx) ...
▶ Local vars
答案 0 :(得分:2)
你的帖子请求返回b'Running!'无法转换为json。所以line:call = call.json()引发JSONDecodeError错误。
答案 1 :(得分:1)
基本问题是,您对API的调用似乎没有返回具有有效JSON的响应,因此当您调用该方法时,requests
无法解析它,就像Muktadiur所说。
为了诊断这一点,你需要弄清楚什么是returend,即它是一个失败的响应,或者是你没有期望从API中的格式(所以可能content-type
错字引起了API返回的方式与您预期的不同,例如)。
在交互式python会话中运行请求代码可能是值得的,像在Django视图中那样ping API,看看你实际上得到了什么。我建议curl
更容易做到这一点,但我发现你处于Win环境中。
编辑:实际上,诊断此问题的最简单方法可能是让您在有问题的json调用之上调用print(call.content)
。您还应该添加print(call.status_code)
。这应该很快告诉你1)你实际上得到了什么,2)你正在获得什么HTTP状态代码。这应该有助于解决API调用带来的麻烦。