2013-01-15 17 views
2

我想在MonoDroid項目上使用HttpClient類,但它看起來像System.Net.http命名空間它是無效的。是否有可能在MonoDroid中使用HttpClient類?

我嘗試在項目中添加一個引用到System.Net.http.dll,但它似乎沒有在引用列表中可用。

有什麼想法?

THKS

enter image description here

回答

1

你不能使用HttpClient(還!),但你仍然可以使用System.Net.HttpWebRequest對象,它實際上做HttpClient可以提供方便的包裝(特別是當擊中Web API控制器時)。

下面是從當前項目的樣本我的工作(它使用的NewtonSoft.Json的MonoDroid的端口,而不是標準System.Runtime.Serialization.Json):

private void AddARecord() 
    { 
     var cartesian = new Cartesian() 
          { 
           Description = "next item blah", 
           X = 5, 
           Y = 10, 
           Z = 15, 
          }; 

     string json = JsonConvert.SerializeObject(cartesian); 

     var request = new HttpWebRequest(new Uri(_url)) {ContentType = "application/json", Method = "POST"}; 
     var sw = new StreamWriter(request.GetRequestStream(), System.Text.Encoding.ASCII); 
     sw.Write(json); 
     sw.Close(); 

     request.BeginGetResponse(ProcessJsonResponseForSingleResult, request); 
    } 

...在Web API控制器我打不一些隨意的東西,保存我剛剛發送的對象,然後調整描述,以便我知道它的工作原理。然後將其發送微調的對象回來...

然後回調ProcessJsonResponseForSingleResult看起來像

private void ProcessJsonResponseForSingleResult(IAsyncResult ar) 
    { 
     var request = (HttpWebRequest)ar.AsyncState; 
     var response = request.EndGetResponse(ar); 

     using (var outputStream = new StreamReader(response.GetResponseStream(), System.Text.Encoding.ASCII)) 
     { 
      var jsonString = outputStream.ReadToEnd(); 
      Log.Info("PJRFSR", string.Format("JSON string: {0} - deserialising...", jsonString)); 
      var cartesian = JsonConvert.DeserializeObject<Cartesian>(jsonString); 

      RunOnUiThread(() => UpdateUiTextView(cartesian.Description)); 
     } 

    } 

是的,我知道,它使用了我不喜歡任何更多要麼BeginAsync/EndAsync模式,但如果你只是需要完成某件事情,它確實有效。

4

HttpClient的是一個.NET 4.5類,這是目前無法在單爲Android。 Mono本身在3.0版本中支持它,但Mono for Android仍然基於Mono 2.10。我知道Xamarin現在正在將Mono for Android(和MonoTouch)更新到Mono 3.0,但據我所知,目前還沒有發佈日期。

+0

感謝您的信息Greg – xus

2

我知道這是一個古老的線程,但我剛剛看到Xamarin終於在Xamarin.Android 4.8中給出了System.Net.Http,所以想過與你分享。

謝謝。

相關問題