0

URL を受け取り、リダイレクト先の最初の場所を吐き出すかなり単純なプログラムがあります。とにかく、私はいくつかのリンクでそれをテストしており、いくつかの URL で 400 エラーが発生することに気付きました。そのような URL をブラウザに貼り付けてテストしてみましたが、うまくいきました。

    static string getLoc(string curLoc, out string StatusDescription, int timeoutmillseconds)
    {
        HttpWebRequest x = (HttpWebRequest)WebRequest.Create(curLoc);            
        x.UserAgent = "Opera/9.52 (Windows NT 6.0; U; en)";
        x.Timeout = timeoutmillseconds;            
        x.AllowAutoRedirect = false;
        HttpWebResponse y = null;
        try
        {
            y = (HttpWebResponse)x.GetResponse(); //At this point it throws a 400 bad request exception.
4

1 に答える 1

0

クッキーで何か奇妙なことが起こっていると思います。リンクをテストしていた方法が原因で、リンクが機能するために必要な Cookie はブラウザーにありましたが、リンクにはありませんでした。手動でテストしていた (他のリンクが失敗したときに) リンクの一部が Cookie を生成していたことが判明しました。

何が起こったのか少し複雑ですが、簡単な答えは、私のブラウザには Cookie があり、プログラムにはありませんでした。リダイレクト間で Cookie を維持しても問題は解決しませんでした。

根本的な問題は、私がテストしているリンクが追加のパラメーターまたは Cookie のいずれか、またはその両方を必要とするという事実によって引き起こされます。パラメータ/Cookieは追跡用であり、追跡を中断したくないため、テストでは両方を回避しようとしていました。

要するに、問題が何であるかは知っていますが、解決可能な問題ではありません。

于 2009-03-13T17:35:48.100 に答える