2

全部,

我的要求很简单。我必须对 IP:port 组合执行简单的 HTTP POST。我使用简单的套接字编程来做到这一点,并且我已经成功地将我的请求发送给他们,并从他们那里得到了回复。唯一的问题是响应始终是 HTTP 400: Bad Request 后跟我的 HTTP POST 消息。我不确定问题出在客户端还是服务器上。我唯一的猜测是我发送的数据可能存在问题。这就是我的 POST 的样子

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


--Content--

来自服务器的响应看起来像这样

HTTP/1.1 400 Bad Request
Content-Length: xxx

--Same content that I sent them--

我不确定我是否可以在这里输入服务器的 IP,所以让自己继续使用 . 我很确定问题不会存在,因为我从服务器收到了一些响应并对连接充满信心。有人能帮我吗 ?

PS:关于我的帖子的一些指示:

1)服务器请求了 HTTP 5.1,我不确定这是否正确
2)我玩过内容长度之后的行空间数。我试过给出一条和两条线。不确定这是否会有所作为。在wireshark上,虽然我看到行空间的数量与单个行空间不同,但协议被指定为TCP,但有两个它更改为HTTP。始终通过 HTTP 协议接收响应。对差异的一些解释也将有所帮助

谢谢

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

edit2:根据建议表 fvu 和其他人,我使用 WebClient 上传我的请求。仍然返回 400。WebClient 生成的标头如下所示

POST <server tag> HTTP/1.1
Host: <IP:PORT>
Content-Length: 484
Expect: 100-continue
Connection: Keep-Alive

我看到的问题可能是服务器不期望标题中的所有细节。服务器只向Content-Length我们请求。那会是个问题吗?谢谢

4

2 回答 2

0

您可以使用调试代理来查看客户端请求和服务器响应,以确定您的客户端套接字程序需要做什么。

但首先您需要创建一个浏览器显示的简单网页,允许您从浏览器向 Web 服务器进行 POST,并从服务器获得简单的响应。

于 2013-07-22T20:56:59.140 回答
0
  1. HTTP/5.1 错误或被服务器应用程序的程序员误用

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

于 2013-07-29T15:27:43.890 回答