0

以下は私のコードです:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Timeout = timeout;
request.ReadWriteTimeout = timeout;
request.Proxy = new WebProxy("http://" + proxyUsed + "/", true);
request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.63 Safari/535.7";
request.CookieContainer = new CookieContainer();
request.AllowAutoRedirect = true;

ASCIIEncoding encoding = new ASCIIEncoding();
string postData = "";

foreach (string[] p in parameter)
{
    if (postData != "")
        postData += "&";
    postData += string.Format("{0}={1}", p[0], p[1]);
}
byte[] data = encoding.GetBytes(postData);

request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;

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

using (WebResponse myResponse = request.GetResponse())
{
    using (StreamReader sr = new StreamReader(myResponse.GetResponseStream(), System.Text.Encoding.UTF8))
    {
        result = sr.ReadToEnd();
        httpLink = myResponse.ResponseUri.AbsoluteUri;
        sr.Close();
    }
    myResponse.Close();
}

Web ページに対して POST http 要求を行うときに問題が発生しました。直接接続を使用すると、正常に動作します。しかし、プロキシを使用すると、タイムアウト例外がスローされます。ただし、postData を空に設定すると、プロキシを使用していても問題なく動作します。これの最も可能性の高い理由は何ですか? ありがとう。

4

1 に答える 1

0

膨大な量の情報はありません。プロキシ サーバーのログにアクセスできますか?

戻り変数を検査すると、405 エラーが発生しますか? これは、プロキシが POST 処理をサポートしていないことを示しています。

デバッグに関しては、フィドラーをプロキシとして設定する (または透過的に使用する) ことで、ボックスに出入りするトラフィックを表示し、データを分析して、要求/応答に異常があるかどうかを確認できます。 .

于 2012-07-04T09:45:40.173 に答える