Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
HTTP 400-难以理解的错误代码,描述最少_Http_Tcp_Http Headers_Http Post - Fatal编程技术网

HTTP 400-难以理解的错误代码,描述最少

HTTP 400-难以理解的错误代码,描述最少,http,tcp,http-headers,http-post,Http,Tcp,Http Headers,Http Post,全部, 我的要求相当简单。我必须执行一个简单的HTTP POST到IP:端口组合。我使用简单的套接字编程来实现这一点,我成功地将我的请求发送给他们,并从他们那里得到响应。唯一的问题是,响应总是HTTP 400:Bad请求,后跟我的HTTP POST消息。我不确定问题是出在客户端还是服务器上。我唯一的猜测是我发送的数据可能有问题。这就是我的帖子的样子 POST /<Server Tag> HTTP/5.1 Content-Length: xxx --Content-- 我不确定是

全部,

我的要求相当简单。我必须执行一个简单的HTTP POST到IP:端口组合。我使用简单的套接字编程来实现这一点,我成功地将我的请求发送给他们,并从他们那里得到响应。唯一的问题是,响应总是HTTP 400:Bad请求,后跟我的HTTP POST消息。我不确定问题是出在客户端还是服务器上。我唯一的猜测是我发送的数据可能有问题。这就是我的帖子的样子

POST /<Server Tag> HTTP/5.1
Content-Length: xxx


--Content--
我不确定是否可以在这里输入服务器的IP,所以我一直在使用。我很确定问题不会出现,因为我从服务器上得到了一些响应,并且对连接很有信心。有人能帮我吗

附:关于我的帖子的一些建议:

1) 服务器请求了HTTP 5.1,我不确定这是否正确
2) 我已经在内容长度之后的行空间数量上做了尝试。我试着说一两句话。我不确定这是否会有所不同。在wireshark上,虽然我看到行空间的数量与单个行空间不同,但协议被指定为TCP,但有两个行空间时,它会更改为HTTP。响应总是通过HTTP协议接收。对差异进行一些解释也会有所帮助

谢谢

编辑:另一件让我困惑的事情是,响应是HTTP 1.1,而不是我发送的5.1。我也尝试过将我的帖子改成1.1,但没有成功

编辑2:根据fvu和其他人的建议,我使用WebClient上传了我的请求。还是拿了400。WebClient生成的标头如下所示

HTTP/1.1 400 Bad Request
Content-Length: xxx

--Same content that I sent them--
POST <server tag> HTTP/1.1
Host: <IP:PORT>
Content-Length: 484
Expect: 100-continue
Connection: Keep-Alive
POST HTTP/1.1
主持人:
内容长度:484
预期:100人继续
连接:保持活力
我看到的问题可能是服务器不希望头中包含所有详细信息。服务器仅向我们请求了
内容长度
。那会是个问题吗?
谢谢

您可以使用调试代理查看客户端请求和服务器响应,以了解客户端套接字程序需要执行的操作

但首先,您需要创建一个浏览器显示的简单网页,允许您从浏览器向web服务器发送帖子,并从服务器获得简单响应

  • HTTP/5.1要么错误,要么被服务器应用程序的程序员误用

  • 您应该首先从服务器api获得一个有效的示例来检查协议实现


  • 如果您的请求包含标题“Content Length:”,则这是一个问题;它应该是“内容长度:”。您可能应该使用实际的HTTP客户端库,而不是自己编写HTTP;这几乎总是比较容易。(HTTP/5.1也是胡说八道。)HTTP 5.1肯定是错的。同样令人好奇的是,为什么不为http使用现成的API,您可能会在http和套接字通信的许多细节上浪费大量时间,您最好将时间投入到实际提供的功能上。@JamesAylett:我的错。它是
    Content-Length
    而不是“Content-Length”。一般来说,4xx=客户端出错,5xx=服务器有问题。@All:对可以使用的API有什么建议吗?