[通用 Windows 平台] 中的 System.Net.Http.HttpClient 无法正常工作

Posted

技术标签:

【中文标题】[通用 Windows 平台] 中的 System.Net.Http.HttpClient 无法正常工作【英文标题】:System.Net.Http.HttpClient in [Universal Windows Platform] not working properly 【发布时间】:2017-02-23 15:03:26 【问题描述】:

我编写了从(在线)REST 服务获取数据的简单方法:

    public async Task<Object> GetTask()
    
        try
        
            using (HttpClient client = new HttpClient())
            
                client.BaseAddress = new Uri("http://111.111.111.111:8080/");
                HttpResponseMessage result = await client.GetAsync("ABC/CDE/getsomeinfo");
                if (result.IsSuccessStatusCode)
                
                    //Deserialize
                
            
        
        catch (Exception ex)
        
            Debug.WriteLine("Error" + ex);
        

        return null;
    

每当我在 UWP 上运行它时,我都会遇到异常:

找不到与此错误代码相关的文本。

无法与服务器建立连接

HResult 2147012867

我正在尝试将我的客户端与内部网络中的 restapi 连接起来。在表单中,相同的代码工作正常。

【问题讨论】:

您是否让您的应用能够访问本地网络? (msdn.microsoft.com/en-us/windows/uwp/packaging/…,privateNetworkClientServer 上限)。你能做一个原始的 TCP 套接字连接到目标 IP 地址吗? 【参考方案1】:

试试这个

HttpResponseMessage response;

public async Task<string> webserviceResponse(string HttpMethod)
      
    // check internet connection is available or not   

    if (NetworkInterface.GetIsNetworkAvailable() == true)
    
       // CancellationTokenSource cts = new CancellationTokenSource(2000); // 2 seconds
        HttpClient client = new HttpClient();
        MultipartFormDataContent mfdc = new MultipartFormDataContent();
        mfdc.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data");
        string GenrateUrl = "your url";

        if (HttpMethod == "POST")
        
            response = await client.PostAsync(GenrateUrl, mfdc);

        
        else if (HttpMethod == "PUT")
        
            response = await client.PutAsync(GenrateUrl, mfdc);
        
        else if (HttpMethod == "GET")
        
            response = await client.GetAsync(GenrateUrl);
        
        var respon = await response.Content.ReadAsStringAsync();
        string convert_response = respon.ToString();
        return convert_response;
    
    else
    
        return "0";
    

【讨论】:

我在 Package.appxmanifest 及其工作中设置了互联网功能,谢谢 设置成什么能力?

以上是关于[通用 Windows 平台] 中的 System.Net.Http.HttpClient 无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章