簡體   English   中英

HTTPWebRequest.GetResponse()拋出連接失敗異常

[英]HTTPWebRequest.GetResponse() throws connection failure exception

我正在嘗試創建一個簡單的應用程序,該應用程序在單擊按鈕時執行HTTP請求/響應。 這是我從參考書中獲得的全部代碼:

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

namespace emulator2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        public void button1_Click(object sender, EventArgs e)
        {
            Uri l_Uri = new 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 =”無法建立與網絡的連接。“ StackTrace:在System.Net.HttpWebRequest.finishGetResponse()在System.Net.HttpWebRequest.GetResponse()在emulator2.Form1.button1_Click()在System.Windows.Forms.Control.OnClick()在System.Windows.Forms.Button 。在System.Windows.Forms.Application.Run上的Microsoft.AGL.Forms.EVL.EnterMainLoop()處的System.Windows.Forms.Control._InternalWnProc()處的System.Windows.Forms.ButtonBase.WnProc()處單擊() ()在emulator2.Program.Main()

此行的錯誤點:

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

有誰知道如何解決這個問題? 我需要快速解決這個問題。所以給予的任何幫助都非常感謝! 謝謝!

我的猜測是模擬器沒有正確的網絡連接。 在舊的Windows Mobile模擬器上建立網絡並運行時,可能會很痛苦(根據我的經驗,這是一個失敗的嘗試)。 (在Windows Phone 7中很容易。)

加載的Internet Explorer,看看有沒有可以使相同的URL連接...

此外,您不會處置任何資源(如果此代碼確實在您編寫的參考書中,那么這是對該書的重要黑色標記)。 例如,您應該處理Web響應:

using (HttpWebResponse response = ...)
{
}

同樣,我會按照一般原則親自處理響應流和流閱讀器。 懷疑當響應被釋放時,流也將是 - 但是處理所有流等是有意義的,除非你知道你需要將它們置於不受干擾之外。

如果您在仿真器中運行,則需要“搖籃”仿真器,然后與ActiveSync(Win XP)或Windows Mobile設備中心(Vista或7)建立伙伴關系。

這將允許仿真器與PC共享網絡連接。 即使您想要從仿真器連接到PC,也需要執行此操作。

正如Jon所提到的,在WP7中你不需要以這種方式建立連接,WP7模擬器自動共享主機PC的網絡連接。

使用IE Mobile(在模擬器上)檢查設備是否可以連接到站點。

編輯
要放置仿真器,請在VS2008中從“工具”菜單中選擇“設備仿真器管理器”。 選擇正在運行的仿真器,右鍵單擊並選擇“支架”。

移動設備中心應自動啟動並詢問您是否要創建合作伙伴關系,就像您已連接真實設備一樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM