2016-11-06 42 views
0

我有以下代碼,當訪問網站時有錯誤,SSL有什麼問題。 (錯誤:SecureChannelFailure(認證或解密失敗)他們的SSL證書是有效的。當HttpClient的代碼被稱爲直接有沒有發出什麼是錯我的代碼沒有問題Xamarin Android HttpClient在使用某個類時出錯

Uri uri =new Uri("https://jsonplaceholder.typicode.com/posts/1"); 
    using (HttpClient httpclient = new HttpClientClass()) 
    { 
     var tt = await httpclient.GetAsync(uri); 
     string tx = await tt.Content.ReadAsStringAsync(); 
     Log.Info(TAG, tx); 
    } 




public class HttpClientClass : HttpClient 
    { 
    private HttpClient _httpclient = null; 
    private HttpClientHandler messagehandler = new Xamarin.Android.Net.AndroidClientHandler(); 

    public HttpClientClass() 
    { 
     _httpclient = new HttpClient(messagehandler); 
     } 
    } 

代碼。?

Uri uri =new Uri("https://jsonplaceholder.typicode.com/posts/1"); 
    using (HttpClient httpclient = new HttpClient()) 
    { 
     var tt = await httpclient.GetAsync(uri); 
     string tx = await tt.Content.ReadAsStringAsync(); 
     Log.Info(TAG, tx); 
    } 

回答

0

由於Https with TLS 1.2 in Xamarin 這裏是解決方案。由保羅·貝茨添加的NuGet modernhttpclient及以下使用。這應該類中工作或沒有。

  Uri uri = new Uri("https://jsonplaceholder.typicode.com/posts/1"); 
      using (var httpClient = new HttpClient(new NativeMessageHandler())) 
      { 
       var tt = await httpClient.GetAsync(uri); 
       string tx = await tt.Content.ReadAsStringAsync(); 
       //Log.Info(TAG, tx); 
      } 
+0

釷問題在於「內部類」示例不起作用,但在httpclient直接調用時起作用。 「內部課堂」的目的是讓我可以在一個地方更換爲不同的處理程序,而不用在整個項目中進行查找和替換。 – AlbertK

+0

當httpclient被直接調用時也不適用於我。你使用的是XFrom還是Classic?你從哪裏調用這個代碼?活動還是PCL? –

+0

我使用Xamarin Android經典,我只是放在一個類文件。 – AlbertK