簡體   English   中英

HttpWebResponse不響應

[英]HttpWebResponse does not respond

我的HttpWebRequest有問題。 我正在嘗試管理具有WebService的服務器和具有CF 2.0客戶端的Windows CE 6.0之間的連接,而我的實際目的是檢索Windows CE計算機的外部IP。 我嘗試使用HttpWebResponse但是在通話過程中卡住了。
現在,我將更清楚地講,這就是我在WinCE機器上運行以獲取IP的代碼:

    private string GetIPAddressRemote()
    {
        Uri validUri = new Uri("http://icanhazip.com");

        try
        {
            string externalIP = "";

            HttpWebRequest httpRequest = (HttpWebRequest)HttpWebRequest.Create(validUri);

            httpRequest.Credentials = CredentialCache.DefaultCredentials;
            httpRequest.Timeout = 10000;  // Just to haven't an endless wait

            using (HttpWebResponse httpResponse = (HttpWebResponse)httpRequest.GetResponse()) 
            /* HERE WE ARE
             * In this point my program stop working... 
             * well actually it doesn't throw any exception and doesn't crash at all
             * For that reason I've setted the timeout property because in this part
             * it starts to wait for a response that doesn't come
             */
            {
                using (Stream stream = httpResponse.GetResponseStream())
                { 
                    // retrieve the return string and 
                    // save it in the externalIP variable
                }
            }

            return externalIP;
        }
        catch(Exception ex)
        {
            return ex.Message;
        }
    }

那我有什么問題 我不知道為什么它會在httpRequest.GetResponse()調用期間httpRequest.GetResponse() ,有什么主意嗎? 我必須說我在代理服務器下,所以我想到了代理服務器可能阻止某些請求的想法,是嗎?

好的,我想到了這樣的東西:

    private string GetIPAddressRemote()
    {
        Uri validUri = new Uri("http://icanhazip.com/");

        int tryNum = 0;

        while (tryNum < 5)
        {
            tryNum++;

            try
            {
                string externalIP = "";

                WebProxy proxyObj = new WebProxy("http://myProxyAddress:myProxyPort/", true); // Read this from settings

                WebRequest request = WebRequest.Create(validUri);

                request.Proxy = proxyObj;
                request.Credentials = CredentialCache.DefaultCredentials;
                request.Timeout = 10000;  // Just to haven't an endless wait

                using (WebResponse response = request.GetResponse())
                {
                    Stream dataStream = response.GetResponseStream();

                    using (StreamReader reader = new StreamReader(dataStream))
                    {
                        externalIP = reader.ReadToEnd();
                    }
                }
                return externalIP;
            }
            catch (Exception ex)
            {
                if(tryNum > 4)
                    return ex.Message;
            }

            Thread.Sleep(1000);
        }
        return "";
    }

但是現在的問題是,沒有任何要檢索的信息。 我的意思是,我從Stream解析的字符串是一個html頁面,而檢索到的字符串是:

<html>
  <body>
    <h1>It works!</h1>
    <p>This is the default web page for this server.</p>
    <p>The web server software is running but no content has been added, yet.</p>
  </body>
</html>

我現在能做什么?

暫無
暫無

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

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