英文:
C++ HTTP 2 POST request getting rejected
问题
这是您在C++中的尝试:
char* write_buf = "POST /api/v3/order HTTP/2\r\n"
"Host: api.binance.com\r\n"
"user-agent: curl/7.81.0\r\n"
"accept: */*\r\n"
"X-MBX-APIKEY: dummy_one\r\n"
"content-length: 5\r\n"
"content-type: application/x-www-form-urlencoded\r\n"
"hello";
但是,您的请求被拒绝,并出现以下错误:
HTTP/1.1 505 HTTP Version Not Supported
根据您的描述,这可能是一个通用错误响应,特别是与未转义的空格有关。问题似乎出现在POST请求消息的格式上。如果您的SSL连接在GET请求中工作正常,那么问题可能在于POST请求的格式。
英文:
I am trying to simulate this Curl command but only using C++:
curl -H "X-MBX-APIKEY: dummy_one" -X POST 'https://api.binance.com/api/v3/order?hello'
The above request generates this response:
{"code":-2014,"msg":"API-key format invalid."}
Curl's verbose logging switch shows it sent this:
> POST /api/v3/order?hello HTTP/2
> Host: api.binance.com
> user-agent: curl/7.81.0
> accept: */*
> x-mbx-apikey: dummy_one
>
This is my attempt in C++:
char* write_buf = "POST /api/v3/order HTTP/2\r\n"
"Host: api.binance.com\r\n"
"user-agent: curl/7.81.0\r\n"
"accept: */*\r\n"
"X-MBX-APIKEY: dummy_one\r\n"
"content-length: 5\r\n"
"content-type: application/x-www-form-urlencoded\r\n"
"hello";
if(BIO_write(bio, write_buf, strlen(write_buf)) <= 0)
{
However, my request is getting rejected with:
HTTP/1.1 505 HTTP Version Not Supported
After Googling I think this could be a generic error response, particularly with un-escaped spaces.
I'm not sure what is the exact problem.
My SSL connection is fine, it works perfectly with a GET request. The problem appears to be in the format of the POST request message.
答案1
得分: 0
这是HTTP/1.1。HTTP/2是一种二进制协议。只需将您的 /2
更改为 /1.1
,您就应该解决问题了。HTTP/1.1并没有被废弃。
Curl的详细日志记录不显示传输协议,而只是显示语义上发送的内容。
英文:
This is HTTP/1.1. HTTP/2 is a binary protocol. Just change your /2
to /1.1
and you should get unstuck. HTTP/1.1 is not deprecated.
Curl verbose logging doesn't show the wire protocol, but rather just what it semantically sent.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论