views:

48

answers:

0

For starters, here's my code:

// Create a request using a URL that can receive a post. 
  WebRequest request = WebRequest.Create("http://mydomain.com/cms/csharptest.php");
  request.Credentials = new NetworkCredential("myUser", "myPass");
  // Set the Method property of the request to POST.
  request.Method = "POST";
  // Create POST data and convert it to a byte array.
  string postData = "name=PersonName&age=25";
  byte[] byteArray = Encoding.UTF8.GetBytes(postData);
  // Set the ContentType property of the WebRequest.
  request.ContentType = "application/x-www-form-urlencoded";
  // Set the ContentLength property of the WebRequest.
  request.ContentLength = byteArray.Length;
  // Get the request stream.
  Stream dataStream = request.GetRequestStream();
  // Write the data to the request stream.
  dataStream.Write(byteArray, 0, byteArray.Length);
  // Close the Stream object.
  dataStream.Close();
  // Get the response.
  HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  // Display the status.
  Console.WriteLine((response).StatusDescription);
  // Get the stream containing content returned by the server.
  dataStream = response.GetResponseStream();
  // Open the stream using a StreamReader for easy access.
  StreamReader reader = new StreamReader(dataStream);
  // Read the content.
  string responseFromServer = reader.ReadToEnd();
  // Display the content.
  Console.WriteLine(responseFromServer);
  // Clean up the streams.
  reader.Close();
  dataStream.Close();
  response.Close();

The directory cms/ requires authentication, but if I try running this same code somewhere, where authentication isn't needed, it works fine. The error (System.Net.WebException: The remote server returned an error: (403) Forbidden) occurs at HttpWebResponse response = (HttpWebResponse)request.GetResponse();

I have managed in reading data after authenticating, but not if I also send POST data. What's wrong with this?