Получение 400 неверных запросов «отсутствует ключ потребителя», даже если они указаны в теле запроса - PullRequest
0 голосов
/ 18 апреля 2019

Итак, я пытаюсь написать карманную библиотеку API в Nim.У меня есть следующий код, который отправляет запрос POST на карманные серверы с ключом потребителя, но я получаю сообщение об ошибке 400, говорящее об отсутствии ключа потребителя.


import httpclient


var client = newHttpClient()

client.headers = newHttpHeaders({ "Content-Type": "application/x-www-form-urlencoded" })

var url = "https://getpocket.com/v3/oauth/request"

let body = {
  "consumer_key": "xxxxx-xxxxxxxxxxxxxxxxxxxxx",
  "redirect_uri": "http://example.com/"
}

let response = client.request(url, httpMethod = HttpPost, body = $body)
echo response.status, response.headers

Вот мой вывод

400 Bad Request{"date": @["Thu, 18 Apr 2019 09:33:54 GMT"], "x-frame-options": @["SAMEORIGIN"], "content-length": @["15"], "p3p": @["policyref=\"/w3c/p3p.xml\", CP=\"ALL CURa ADMa DEVa OUR IND UNI COM NAV INT STA PRE\""], "x-error": @["Missing consumer key."], "content-type": @["text/html; charset=UTF-8"], "x-error-code": @["138"], "x-source": @["Pocket"], "server": @["Apache"], "status": @["400 Bad Request"], "connection": @["keep-alive"], "cache-control": @["private"]}

Ключ потребителя правильный.Я сделал запрос с помощью Почтальона и получил ответ 200.

1 Ответ

2 голосов
/ 18 апреля 2019

Что вам нужно сделать, это импортировать JSON.Это макрос, выполняющий сериализацию JSON.Смысл в том, что он часто используется и поэтому должен быть коротким.Для получения дополнительной информации проверьте проверьте это .

Так хочется сделать это

client.headers = newHttpHeaders({ "Content-Type": "application/x-www-form-urlencoded" })

сделать это

client.headers = newHttpHeaders({ "Content-Type": "application/json" })
...