Xamarin.android 可以在MonoDroid中使用HttpClient类吗?
我试图在MonoDroid项目上使用HttpClient类,但它看起来像System.Net.http命名空间,它无效 我试图在项目中将引用添加到System.Net.http.dll,但它似乎在引用列表中不可用 有什么想法吗 ThksXamarin.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)
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));
}
}