2

これが私のコードです:

   @{
        //string postString = "parameter=value";
        const string contentType = "application/x-www-form-urlencoded";
        System.Net.ServicePointManager.Expect100Continue = false;

        CookieContainer cookies = new CookieContainer();
        HttpWebRequest webRequest = WebRequest.Create("http://somehost:8080/myApp") as HttpWebRequest;
        webRequest.Method = "POST";
        webRequest.AllowAutoRedirect = false;
        webRequest.ContentType = contentType;
        webRequest.CookieContainer = cookies;
        webRequest.ContentLength = postString.Length;
        webRequest.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1";
        webRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";

        StreamWriter requestWriter = new StreamWriter(webRequest.GetRequestStream());
        requestWriter.Write(postString);
        requestWriter.Close();

        HttpWebResponse resp = webRequest.GetResponse() as HttpWebResponse;
        string location = resp.Headers["Location"];
        Response.Redirect(location);
    }

からの応答http://somehost:8080/myAppは、他のドメインへの 302 リダイレクトです。webRequest.AllowAutoRedirect = true;レスポンス( )を使って書くResponse.Write(StreamReader(resp.GetResponseStream()).ReadToEnd())と、相対リンクのリソースが解決できず、結果のhtmlが正しく表示されません。

それで、私はこの解決策を思いつきましたが、それは正しくないと感じています。私の解決策は一種の「ハックアラウンド」のようです。

より良い解決策はありますか?

4

1 に答える 1

0

相対 URL を絶対 URL に変更します

 url = objHttpWebResponse.Headers["Location"].ToString();
                        MessageBox.Show("Redirect To " + objHttpWebResponse.Headers["Location"]);
                        System.Threading.Thread.Sleep(2000);
                        Uri final = new Uri(new Uri(txtURL.Text), url);
                        string finalurl = final.AbsoluteUri;
                        download(finalurl);
于 2013-10-09T11:02:23.997 に答える