[通用 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 无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

为什么即使Visual Studio中的简单Hello World通用Windows平台应用程序仍然出现“安全句柄已关闭”错误?

在通用 Windows 平台中将 Vector<T> 用于 SIMD

通用Windows平台(UWP)中的加密/解密存在数据错误(循环冗余校验)

类库(通用应用程序的便携式) System.Threading.Thread 限制

带有 system.drawing 和可能的替代方案的 WIndows 通用应用程序

arm开发板上的linux如何通过网口和windows的网口通信,linux中的socket和windows下的socket能通用吗?