2011-01-06 85 views
0

我试图创建一个简单的应用程序,做一个按钮点击一个HTTP 请求/响应。下面是我从一本参考书了 整个代码:using System.Collections.GenericHTTPWebRequest.GetResponse()抛出连接失败的例外

;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Net;

命名空间emulator2

{

公共部分Form1类:形式

{

公共Form1中()

{

的InitializeComponent();

}

公共无效的button1_Click(对象发件人,EventArgs的)

{

乌里l_Uri =新URI( “http://www.testing.com”);

HttpWebRequest的l_WebReq =(HttpWebRequest的)WebRequest.Create(l_Uri);

HttpWebResponse l_WebResponse = (HttpWebResponse)l_WebReq.GetResponse();

Stream l_responseStream = l_WebResponse.GetResponseStream();

StreamReader l_SReader = new StreamReader(l_responseStream);

string resultstring = l_SReader.ReadToEnd();

Console.WriteLine(resultstring);

}

}

}

这让我为难的是,当我的代码 整个块转移到Windows应用程序,它工作正常的事情。但是,当我在设备上使用它时,它只是给我一个错误。以下是 错误的详细信息:

System.Net.WebException未处理 Message =“无法建立与网络的连接”。 堆栈跟踪: 在System.Net.HttpWebRequest.finishGetResponse() 在System.Net.HttpWebRequest。的GetResponse() 在emulator2.Form1.button1_Click() 在System.Windows.Forms.Control.OnClick() 在System.Windows.Forms.Button.OnClick() 在System.Windows.Forms.ButtonBase.WnProc( ) 在System.Windows.Forms.Control._InternalWnProc() 在Microsoft.AGL.Forms.EVL.EnterMainLoop() 在System.Windows.Forms.Application.Run() 在emulator2.Program.Main()

在此行中的错误点:

HttpWebResponse l_WebResponse = (HttpWebResponse)l_WebReq.GetResponse();

有没有人有任何想法如何解决这个问题?我需要得到这个 解决真正的快速..任何帮助给予非常感谢!谢谢!

回答

1

我的猜测是仿真器没有正确的网络连接。根据我的经验,这可能会让人感到痛苦(在我的经验中碰碰运气),并在旧的Windows Mobile模拟器上联网并运行。 (这很容易在Windows Phone 7的)

加载了Internet Explorer,然后看看是否可以对相同的URL连接...

此外,你不处置您的任何资源(如果这段代码确实在你写的参考书中,那对这本书来说就是一个重要的黑色标记)。例如,你应该配置的网络响应:

using (HttpWebResponse response = ...) 
{ 
} 

同样我会亲自处理的响应流和流阅读器,只是一般原则。我嫌疑人,当处理响应,流将太 - 但它是有意义的处置所有流等,除非你知道你需要离开他们不置评估。

+0

我正在使用Windows Mobile 6 Professional作为模拟器。我无法将其连接到网络。有任何想法吗? – strider 2011-01-06 17:49:54

+0

@strider:浏览Windows Mobile本身和仿真器设置中的所有各种连接设置。我似乎回想起这就像告诉它使用计算机的默认网络访问模拟NE2000一样。然后您需要在模拟器中建立一个连接到“互联网”。尽管这些都是相当黯淡和遥远的回忆 - 您可能能够通过搜索找到更准确的演练。至少你知道现在不用担心代码:) – 2011-01-06 17:52:56

0

如果您正在模拟器中运行,您将需要“模拟”仿真器,然后与ActiveSync(Win XP)或Windows Mobile Device Center(Vista或7)建立合作伙伴关系。

这将允许模拟器与PC共享网络连接。即使您想从仿真器连接到PC,也需要执行此操作。

正如Jon提到的,在WP7中,您不需要以这种方式建立连接,WP7仿真器会自动共享主机PC的网络连接。

使用IE Mobile(在仿真器上)检查设备是否可以连接到该站点。

编辑
到摇篮模拟器,在VS2008从工具菜单中的“设备仿真器管理”。选择正在运行的模拟器,右键单击并选择“Cradle”。

移动设备中心应自动启动并询问您是否要创建合作伙伴关系,就像连接了真实设备一样。

相关问题