使用C#访问网站

时间:2012-04-09 10:09:00

标签: windows-phone-7 c#-4.0

我正在尝试为Windows Phone 7制作应用程序。这个应用程序将基本上从我们工作中使用的网站上检索信息作为我们的工作时间表,然后将重新获取的信息重新排列为metro风格的UI。说实话,我不知道从哪里开始即。如何检索信息。我应该使用webclient类吗? httpwebrequest类?或其他什么?

所有想法都是适用的

以下是: - pic. of the website i'm trying to access

更新: -

好吧,我是完全愚蠢的,或者我写的代码有问题,我无法弄清楚。我使用的是您编写的相同代码,但我仍然得到一个错误,即Proxy的定义不在System.Net.WebRequest中:(这是我的代码(工作版): -

    private void MainPage_Loaded(object sender, RoutedEventArgs e)
    {
        if (!App.ViewModel.IsDataLoaded)
        {
            App.ViewModel.LoadData();
        }
        string url = "https://medinet.se/*****/schema/ibsef";
        WebRequest request = WebRequest.Create(url);
        request.BeginGetResponse(new AsyncCallback(ReadWebRequestCallBack), request);
    }

    private void ReadWebRequestCallBack(IAsyncResult callbackResult)
    {
        try
        {
            WebRequest myRequest = (WebRequest)callbackResult.AsyncState;
            WebResponse myResponse = (WebResponse)myRequest.EndGetResponse(callbackResult);

            using (StreamReader httpwebStreamReader = new StreamReader(myResponse.GetResponseStream()))
            {
                string results = httpwebStreamReader.ReadToEnd();
                Dispatcher.BeginInvoke(() => parsertextBlock.Text = results);
            }
            myResponse.Close();
        }
        catch (Exception ex)
        {
            System.Diagnostics.Debug.WriteLine(ex.ToString());
            Dispatcher.BeginInvoke(() => parsertextBlock.Text = ex.ToString());
        }
    }

但是如果我添加request.Proxy = null !!我收到一个错误,在(System.Net.WebRequest)中没有Proxy的定义。说实话,我开始生气了。

此致

/奥马

1 个答案:

答案 0 :(得分:0)

该过程称为ScreenScrape,我建议您使用Html Agility Pack http://htmlagilitypack.codeplex.com/。创建一个Web服务,从您的网站检索信息并重新排列为适当的格式。通过电话使用您的网络服务并显示您的数据。

使用WebRequest(http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.aspx)和WebResponse(http://msdn.microsoft.com/en-us/library/system.net.webresponse(v=vs.100).aspx)。

提示:将WebRequest.Proxy属性(http://msdn.microsoft.com/en-us/library/system.net.webrequest.proxy.aspx)设置为null,因为我发现它会快得多。

更新:有关WebRequest代理属性的更多信息

在WebRequest对象上设置Proxy = null以避免初始延迟(这样请求将不会启动自动检测代理,我发现它更快)。

WebRequest req = WebRequest.Create("yourURL");
req.Proxy = null;

它位于System.Net命名空间中,因此请使用using语句using System.Net;

System.Net.WebRequest req = WebRequest.Create("yourURL");
req.Proxy = null;

问候。