0

我正在使用 向 PHP 服务器发送 HTTP POST 请求HttpWebRequest。我的代码是这样工作的:

    /// <summary>
    /// Create Post request.
    /// </summary>
    /// <param name="requestUrl">Requested url.</param>
    /// <param name="postData">Post data.</param>
    /// <exception cref="RestClientException">RestClientException</exception>
    /// <returns>Response message, can be null.</returns>
    public string Post(string requestUrl, string postData)
    {
        try
        {
            //postData ends with &
            postData = "username=XXX&password=YYYY&" + postData;

            byte[] data = UTF8Encoding.UTF8.GetBytes(postData);

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(requestUrl);
            request.Method = RequestMethod.Post.ToString().ToUpper();
            request.ContentType = "application/x-www-form-urlencoded";
            request.ContentLength = data.Length;

            using (Stream stream = request.GetRequestStream())
            {
                stream.Write(data, 0, data.Length);
                stream.Flush();
            }

            string responseString;
            using (WebResponse response = request.GetResponse())
            {
                responseString = GetResponseString(response);
            }

            return responseString;
        }
        catch (WebException ex)
        {
            var httpResponse = (HttpWebResponse)ex.Response;
            if (httpResponse != null)
            {
                throw new RestClientException(GetExceptionMessage(httpResponse));
            }

            throw;
        }
    }

我正在经历奇怪的行为。每分钟我都会使用这个发送大约 100 个请求。但有时,此请求会在没有 POST 数据的情况下执行。然后我的 PHP 服务器返回错误(因为我正在检查请求是否为 POST 以及是否有任何 POST 数据)。

这是客户端/服务器通信。装有 Windows 服务应用程序的计算机使用 Wifi 连接到互联网。连接有时真的很差。可以提到这个原因问题吗?如何使 HTTP POST 请求对这种行为安全。

4

1 回答 1

1

我没有看到您使用的任何“自定义”行为,那么您为什么不使用该WebClient.UploadData方法呢?那么你就会知道这不是你做错了什么

它为您完成所有“脏”工作,您也可以添加内容类型标题。

查看该链接了解更多信息: http: //msdn.microsoft.com/en-us/library/tdbbwh0a (v=vs.80).aspx

例子:

public string Post(string requestUrl, string postData)
{
   WebClient myWebClient = new WebClient();
   myWebClient.Headers.Add("Content-Type","application/x-www-form-urlencoded");
   byte[] data = UTF8Encoding.UTF8.GetBytes(postData);
   byte[] responseArray = myWebClient.UploadData(requestUrl,data);
   return responseArray;
}
于 2012-06-22T16:53:41.583 回答