request.exceptions.HTTPError: 400 Ошибка клиента: неправильный запрос URL - PullRequest
0 голосов
/ 28 июня 2019

Я пытаюсь создать объект в базе данных, используя запросы Python.Я могу сделать это с другими URL-адресами, но для этого конкретного я получаю ошибки.Я не уверен, есть ли проблема с фактическим запросом или URL.Для создания требуется четыре предмета, поэтому сейчас я остановлюсь только на них.

Ниже вы найдете пример полезной нагрузки запроса в соответствии с документацией:

def create_opportunity(self, data):
    try:
        r = requests.post(
            self.URL + 'sales/opportunities', data=data,
            headers=self.Header)
        r.raise_for_status()
    except:
        raise
    return r.json()

create_opp = '{"name": "My Opportunity", "primarySalesRep": {"name": "John Doe"}, "company": {"name": "My Company"}, "contact": {"name": "Jane Doe"}}'

opportunity = objCW.create_opportunity(create_opp)

пример полезной нагрузки

{
  "name": "string",
  "primarySalesRep": {},
  "company": {},
  "contact": {}
}

primarsySalesRep

"primarySalesRep": {
    "id": 0,
    "identifier": "string",
    "name": "string",
    "_info": { }
},

компания

"company": {
    "id": 0,
    "identifier": "string",
    "name": "string",
    "_info": { }
},

контакт

"contact": {
    "id": 0,
    "name": "string",
    "_info": { }
},

1 Ответ

1 голос
/ 29 июня 2019

В вашем коде create_opp это строка. Вы не должны передавать строку в data= ключевом слове post(), функции requests.

Учитывая, что сервер возвращает JSON (return r.json()), я могу предположить, что он также получает JSON. Попробуйте сделать что-то вроде этого:

def create_opportunity(self, data):
    r = requests.post(self.URL + 'sales/opportunities', json=data, headers=self.Header)
    r.raise_for_status()
    return r.json()

create_opp = {
    "name": "My Opportunity", 
    "primarySalesRep": {"name": "John Doe"},  # maybe "id" or "identifier" is required? 
    "company": {"name": "My Company"},  # maybe "id" or "identifier" is required? 
    "contact": {"name": "Jane Doe"},
}

opportunity = objCW.create_opportunity(create_opp)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...