Simon
Simon

Reputation: 3285

HTTP POST request issue

I am sending a HTTP POST request to PHP server using HttpWebRequest. My code works like this:

    /// <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;
        }
    }

I am experiencing wierd behaviour. Every minute I am sending like 100 requests using this. But from time to time, this request is executed withou POST data. Then my PHP server returns error (because I am checking if request is POST and if it has any POST data).

This is a client/server communication. Computer with Windows Service application is connected to the internet using Wifi. Connection is sometimes really poor. Can this cause issue mentioned? How to make HTTP POST request secure against this behaviour.

Upvotes: 0

Views: 1511

Answers (1)

eyossi
eyossi

Reputation: 4340

I don't see any "customized" behaviour you use, so why don't you use the WebClient.UploadData method? then you will know it is not something you are doing wrong

it does all of the "dirty" work for you, and you can add the content-type header as well.

look at that link for more info: http://msdn.microsoft.com/en-us/library/tdbbwh0a(v=vs.80).aspx

example:

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;
}

Upvotes: 1

Related Questions