【问题标题】:Unable to retrieve message body on server-side from HTTP Post无法从 HTTP Post 检索服务器端的消息正文
【发布时间】:2018-10-24 03:21:04
【问题描述】:

我正在使用 HTTPWebRequest 向 URL 发送 HTTP 发布请求。我正在使用 multipart/form-data 内容类型以及正文的内容长度发送帖子数据。但是,在服务器端,我无法检索身体。我只能看到发送的标题。我发送的正文的内容长度也匹配。

为什么我无法取回尸体。

请求方法如下所示:

public void Reset(string originalFileData, string uploadLocation)
    {
        TcpClient client = new TcpClient();
        IPEndPoint serverEndPoint = new IPEndPoint(IPAddress.Parse(Server), portNo);
        client.Connect(serverEndPoint);
        string responseContent;
        string serverUrl = "http://" + Server + ":" + portNo + "/abc.aspx" + "?uplvar=" + uploadLocation;
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(serverUrl);
        request.ContentType = "multipart/form-data";
        request.Method = "POST";
        request.ServicePoint.Expect100Continue = false;
        string postData = originalFileData;
        byte[] byteArray = Encoding.UTF8.GetBytes(postData);
        request.ContentLength = byteArray.Length;
        Stream dataStream = request.GetRequestStream();
        dataStream.Write(byteArray, 0, byteArray.Length);
        dataStream.Close();
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
        response.Close();
    }

编辑:我忘了提及,我可以在第一次发送请求时检索正文,但是在我发送的任何后续请求中,我无法检索它。每次发送请求时,我都会创建一个新连接。因此,某些事情可能会阻止请求正文被检索。我不知道为什么。

【问题讨论】:

  • 注意:你开头的 TcpClient 代码与其余部分无关。

标签: c# httpwebrequest


【解决方案1】:

尝试替换

request.ContentType = "multipart/form-data";

request.ContentType = "application/x-www-form-urlencoded";

或查看SO answer 以获取适用于 multipart/formdata 的代码。

【讨论】:

  • 我尝试了这种方法。它没有用。最后,我对原始问题进行了编辑。这可能有助于进一步澄清。谢谢。
  • 然后我会启动 Fiddler 并查看第一个和第二个请求通过网络传输的内容,然后比较它们。
猜你喜欢
  • 2017-05-02
  • 2021-07-09
  • 1970-01-01
  • 1970-01-01
  • 2021-09-04
  • 1970-01-01
  • 2011-06-01
  • 2011-05-12
相关资源
最近更新 更多