Xamarin.android 可以在MonoDroid中使用HttpClient类吗?

Xamarin.android 可以在MonoDroid中使用HttpClient类吗?,xamarin.android,Xamarin.android,我试图在MonoDroid项目上使用HttpClient类,但它看起来像System.Net.http命名空间,它无效 我试图在项目中将引用添加到System.Net.http.dll,但它似乎在引用列表中不可用 有什么想法吗 Thks HttpClient是一个.NET 4.5类,它在Android的Mono中还不可用。Mono本身在3.0版中增加了对它的支持,但Android版的Mono仍然基于Mono 2.10。我知道Xamarin正在努力将Android版Mono(和MonoTouch)

我试图在MonoDroid项目上使用HttpClient类,但它看起来像System.Net.http命名空间,它无效

我试图在项目中将引用添加到System.Net.http.dll,但它似乎在引用列表中不可用

有什么想法吗

Thks


HttpClient是一个.NET 4.5类,它在Android的Mono中还不可用。Mono本身在3.0版中增加了对它的支持,但Android版的Mono仍然基于Mono 2.10。我知道Xamarin正在努力将Android版Mono(和MonoTouch)升级到Mono 3.0,但据我所知,还没有确定发布日期。

您不能使用
HttpClient
(尚未!),但您仍然可以使用
System.Net.HttpWebRequest
对象,它实际上做了
HttpClient
可以为提供方便的包装的事情(特别是在启动Web API控制器时)

下面是我正在处理的当前项目的一个示例(它使用的是monodroid端口
NewtonSoft.Json
,而不是标准的
System.Runtime.Serialization.Json
):

…我正在使用的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));
        }

    }
private void ProcessJsonResponseForSingleResult(IAsyncResult ar)
{
var request=(HttpWebRequest)ar.AsyncState;
var response=request.EndGetResponse(ar);
使用(var outputStream=newstreamreader(response.GetResponseStream(),System.Text.Encoding.ASCII))
{
var jsonString=outputStream.ReadToEnd();
Log.Info(“PJRFSR”,string.Format(“JSON字符串:{0}-反序列化…”,jsonString));
var cartesian=JsonConvert.DeserializeObject(jsonString);
RunOnUiThread(()=>UpdateUiTextView(笛卡尔描述));
}
}

是的,我知道,它使用了BeginAsync/EndAsync模式,我也不喜欢这种模式,但如果你只是需要完成一些事情,它确实可以工作。

我知道这是一个旧线程,但我刚刚看到Xamarin最终给出了
System.Net.Http
,所以我也想与你分享它

谢谢

    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));
        }

    }