0

Webページの読み込みに問題があります。ページの最初の部分だけが表示されているため、どういうわけか、私が得た応答は完全ではないようです。ReadToEndを使用して応答ストリームを書き出す場合、閲覧しようとしているWebページに関係なく、文字列には約700文字しか表示されません。以下のコードを参照してください。

public class GetServerResponse
{
    private Uri url;

    public GetServerResponse(Uri uri)
    {
        this.url = uri;
        HttpWebRequest h = (HttpWebRequest)WebRequest.Create(this.url);
        StartRequest(this.url);
    }

    private void StartRequest(Uri url)
    {
        HttpWebRequest internalRequest = (HttpWebRequest)WebRequest.Create(url);
        GetServerResponseState responseState = new GetServerResponseState();
        responseState.AsyncRequest = internalRequest;

        internalRequest.BeginGetResponse(new AsyncCallback(HandleServerResponse), responseState);

    }

    private void HandleServerResponse(IAsyncResult asyncResult)
    {
        GetServerResponseState responseState = (GetServerResponseState)asyncResult.AsyncState;
        HttpWebRequest internalRequest = (HttpWebRequest)responseState.AsyncRequest;
        internalRequest.AllowAutoRedirect = false;

        responseState.AsyncResponse = (HttpWebResponse)internalRequest.EndGetResponse(asyncResult);

        Stream streamResult;
        try
        {
            streamResult = responseState.AsyncResponse.GetResponseStream();
            using (StreamReader reader = new StreamReader(streamResult, Encoding.UTF8))
            {
                System.Diagnostics.Debug.WriteLine(reader.ReadToEnd());
            }
        }
        catch (FormatException)
        {
            return;
        }
    }


}
public class GetServerResponseState
{
    public HttpWebRequest AsyncRequest { get; set; }
    public HttpWebResponse AsyncResponse { get; set; }
}
4

1 に答える 1

1

ajax Web ページを読み込もうとしていると思います。

この問題の原因は、httpwebrequestが JavaScript を理解せず、JavaScript をトレースして内部の Web ページを取得できないためです。

それを確認するには、目的の Web ページに移動し、右クリックしてソースを表示します。ソース コードでは Web ページの欠落部分を見つけることができませんが、Chrome を使用している場合は、要素の検査を使用して欠落を見つけることができます。部。次に、ajaxを使用しています。

このMSDN スレッドを参照してください。

于 2012-08-14T15:21:56.620 に答える