使用HTTPWEBREQUEST从URL读取响应

时间:2012-05-31 08:56:27

标签: c# asp.net

我必须阅读http://www.bk.com/en/us/restaurant-locator/index.html?s=89165的回复 。我使用了以下代码但是没有得到所有的回复。提前谢谢。

protected void Page_Load(object sender, EventArgs e)
{

    string sUrl = "http://www.bk.com/en/us/restaurant-locator/index.html?s=89165";
    XmlDocument rssDoc = new XmlDocument();
    XmlTextReader rssReader = new XmlTextReader(sUrl.ToString());

    WebRequest wrGETURL;
    wrGETURL = WebRequest.Create(sUrl);

    Stream objStream;
    objStream = wrGETURL.GetResponse().GetResponseStream();
    StreamReader objReader = new StreamReader(objStream, Encoding.UTF8);
    WebResponse wr = wrGETURL.GetResponse();
    Stream receiveStream = wr.GetResponseStream();
    StreamReader reader = new StreamReader(receiveStream, Encoding.UTF8);
    string content = reader.ReadToEnd();
    Response.Write(content);
   }

是否有人帮助将所有数据显示在网页上?

3 个答案:

答案 0 :(得分:1)

除非您的方法有特定原因,否则我会使用webclient。

Console.Write("\nPlease enter a URI (for example, http://www.contoso.com): ");
string remoteUri = Console.ReadLine();

// Create a new WebClient instance.
WebClient myWebClient = new WebClient();
// Download home page data.
Console.WriteLine("Downloading " + remoteUri);                        
// Download the Web resource and save it into a data buffer.
byte[] myDataBuffer = myWebClient.DownloadData (remoteUri);

// Display the downloaded data.
string download = Encoding.ASCII.GetString(myDataBuffer);
Console.WriteLine(download);

Console.WriteLine("Download successful.");

以上示例直接来自MSDN文章。

http://msdn.microsoft.com/en-us/library/xz398a3f.aspx

答案 1 :(得分:1)

首先,您需要解决从网站下载HTML的方式。

  1. 使用XMLDocument.Load方法并将其传递给您要加载的文档的网址。
  2. 使用WebClient.DownloadString方法。
  3. 两者都会在大约3行中下载页面文本,使您的上述代码更加清晰。

    其次,您不能依赖第三方网站来创建有效的XML / XHTML代码,这意味着当您尝试使用XMLDocument解析内容时,它可能会失败。

    第三,也许更重要的是,许多网站禁止您在此方法中“抓取”内容。您可能需要仔细检查是否允许。

    最后..如果您向我们提供您希望在该页面中找到的内容的想法,我们可能会为您提供进一步的帮助。

答案 2 :(得分:0)

请在此处试用此代码......

         System.Net.HttpWebRequest _HttpWebRequest = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(_URL);

        _HttpWebRequest.AllowWriteStreamBuffering = true;


        // set timeout for 20 seconds (Optional)
        _HttpWebRequest.Timeout = 20000;

        // Request response:
        System.Net.WebResponse _WebResponse = _HttpWebRequest.GetResponse();

        // Open data stream:
        System.IO.Stream _WebStream = _WebResponse.GetResponseStream();