2016-08-31 2 views
0

Я продолжал получать <Response [400]> в моем терминале во время запуска скрипта.Как исправить <Response [400]>, а сделать POST в Python?

Я попытался

import requests 
import json 

url = 'http://172.19.242.32:1234/vse/account' 

data = '{ 
    "account_id": 1008, 
    "email_address": "[email protected]", 
    "password": "qqq", 
    "account_type": "customer", 
    "name_prefix": "", 
    "first_name": "Beverly", 
    "middle_names": "", 
    "last_name": "Hills", 
    "name_suffix": "", 
    "non_person_name": false, 
    "DBA": "", 
    "display_name": "BeverlyHills", 
    "address1": "4984 Beverly Dr", 
    "address2": "4984 Beverly Dr", 
    "address3": "", 
    "city": "Beverly Hills", 
    "state": "CA", 
    "postal_code": "90210", 
    "nation_code": "90210", 
    "phone1": "3105554984", 
    "phone2": "", 
    "phone3": "", 
    "time_zone_offset_from_utc": -5, 
    "customer_type": "2", 
    "longitude": -118.4104684, 
    "latitude": 34.1030032, 
    "altitude": 0 
}' 

headers = {'content-type': 'application/json'} 

r = requests.post(url, data=json.dumps(data), headers=headers) 

print r 

Что я сделал не так?

+0

Что такое тело ответа? – Kos

+0

Как это увидеть? – ihue

+0

[Есть несколько свойств и методов, таких как '.text',' .content', '.json()'] (http://docs.python-requests.org/en/master/user/quickstart/#response- контент) – Kos

ответ

4

Изменить

r = requests.post(url, data=json.dumps(data), headers=headers) 

в

r = requests.post(url, data=data, headers=headers) 

, так как данные не ДИКТ, которые должны быть преобразованы в формат JSON, но уже в формате JSON.

+0

не был ли он 'json = data'? если вы передадите 'data = data', тогда он будет закодирован как' x-www-form-urlencoded' вместо 'application/json'. – Kos

+0

Измените его, кажется, все в порядке. – ihue

+0

@ Kos В идеале, данные будут словарем, и он передаст его с использованием параметра json вместо данных. 'request.post (url, json = data)' –

 Смежные вопросы

  • Нет связанных вопросов^_^