0

when i send post data to the proxy server - it returns an error:

Invalid Request error was encountered while trying to process the request:
Some possible problems are:
Missing or unknown request method.
Missing URL.
Missing HTTP Identifier (HTTP/1.0).
Request is too large.
Content-Length missing for POST or PUT requests.
Illegal character in hostname; underscores are not allowed.
HTTP/1.1 Expect: feature is being asked from an HTTP/1.0 software.

and headers:

    /post.php?tid=19 HTTP/1.1
    User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Content-Type: application/x-www-form-urlencoded
    Referer: http://site.ru/viewtopic.php?pid=51
    Host: site.ru
    Content-Length: 552
    Expect: 100-continue
    Proxy-Connection: Keep-Alive

Set proxy in programm:

request = (HttpWebRequest)HttpWebRequest.Create(postUrl);
request.Proxy = new WebProxy( this.ip + ":" + this.port);
request.UseDefaultCredentials = true; 

Sending request:

try
{
    System.Net.ServicePointManager.Expect100Continue = false;
    Stream dataStream = request.GetRequestStream();
    dataStream.Write(data, 0, data.Length);
    dataStream.Close();
    WebResponse response = request.GetResponse();
    Console.WriteLine(((HttpWebResponse)response).StatusDescription);
    dataStream = response.GetResponseStream();
    StreamReader reader = new StreamReader(dataStream);
    string responseFromServer = reader.ReadToEnd();
    Console.WriteLine(responseFromServer);
    reader.Close();
    dataStream.Close();
    response.Close();

}
catch (WebException ex)
{
    Console.WriteLine(ex.Status);
    if (ex.Response != null)
    {
        if (ex.Response.ContentLength != 0)
        {
            using (var stream = ex.Response.GetResponseStream())
            {
using (var reader = new StreamReader(stream))
{
    Console.WriteLine(reader.ReadToEnd());
}
            }
        }
    }
}

When the proxy server is disabled or commented out code send post data - request succeeds

//Stream dataStream = request.GetRequestStream();
//dataStream.Write(data, 0, data.Length);
//dataStream.Close();

Thanks for answers !

1 Answers1

0

The remark about missing HTTP identifier, does

request.Proxy = new WebProxy("http://" + this.ip + ":" + this.port);

make any difference?

dyson
  • 866
  • 6
  • 12
  • The credentials are not being set for the proxy: try request.Proxy.Credentials = CredentialsCache.DefaultNetworkCredentials – dyson Apr 30 '14 at 11:49
  • I added this setting, but the error remains the same. request.Proxy.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials; – user3589019 Apr 30 '14 at 11:55