2016-08-03 104 views
4

我想讓應用程序在Device Portal中實現REST API's到我的應用程序中。但是,我無法使用HttpClient連接到127.0.0.1,而且即使在System.Net和Windows.Web.Http中,另一個API也很熟悉,總是發生異常「無法建立與服務器的連接」。無法通過HttpClient連接到UWP中的127.0.0.1(localhost)Device Portal

Click to see image

但是,這只是發生在RS1建設(104393)。在TH2構建(10568)中,任何東西都像魅力一樣工作。

這裏是我的代碼:

當我使用Windows.Web.Http

private async void dvInfo_Click(object sender, RoutedEventArgs e) 
     { 
      try 
      { 
       HttpClient httpClient = new HttpClient(); 
       httpClient.DefaultRequestHeaders.Accept.TryParseAdd("*/*"); 
       string ResponseString = await httpClient.GetStringAsync(new Uri("http://127.0.0.1/api/os/machinename")); //got exception here, ResponseString null 
       txtStatus.Text = ResponseString.ToString(); 
      } 
      catch (Exception ex) 
      { 
       var msg = new MessageDialog(ex, "Sorry, we got some error"); //... 
      } 
     } 

我也嘗試使用System.Net,同樣得到了異常

private async void dvInfo_Click(object sender, RoutedEventArgs e) 
     { 
      try 
      { 
     Uri uri = new Uri("http://127.0.0.1/api/os/machinename"); 
     var httpClient = new HttpClient(); 
     var ResponseString = await httpClient.GetAsync(uri); //got exception here, ResponseString null 
       txtStatus.Text = ResponseString.ToString(); 
      } 
      catch (Exception ex) 
      { 
       var msg = new MessageDialog(ex, "Sorry, we got some error"); //... 
      } 
     } 

幫助:3

回答

1

[解決] 我得搬到Windows.Web.Http然後用內httphttps URI,afterthat不要通過CERT /忽略:

var filter = new HttpBaseProtocolFilter(); 
filter.IgnorableServerCertificateErrors.Add(ChainValidationResult.Expired); 
filter.IgnorableServerCertificateErrors.Add(ChainValidationResult.Untrusted); 
filter.IgnorableServerCertificateErrors.Add(ChainValidationResult.InvalidName); 
var http = new HttpClient(filter); 
+0

嘿,那裏,謝謝你的回覆,它對我來說太完美了。但它不適用於後期方法你也有辦法嗎?如重新啓動或運行應用程序 –

+0

工作方法必須在使用post方法時在標題中設置Cookie。 –

+0

我發現我需要CSRF令牌等,但不知道如何添加它們,請問 –

2

我假設這是在Mobile上。如果它在桌面或其他平臺上,請確保先使用正確的端口。

您是否嘗試過從另一臺設備定位手機?例如在PC上使用手機的IP地址運行相同的應用程序。它可能會這樣工作。原因是loopback protection,應用程序無法連接到同一臺設備上的API,作爲安全防範措施。您可以在發佈的鏈接中啓用VS中應用構建選項的本地環回。

+0

是的,這實際上是在移動。你能簡化一下嗎?我仍然感到困惑。 這隻發生在最新版本(14393 | Redstone)中,在之前的版本(10568 |閾值)中,所有的東西都像魅力一樣工作。 我試圖「清除允許本地網絡環回覆選框」。仍然沒有運氣。 –

相關問題