0
我在Xamarin.Android中构建应用程序!它在给定经纬度时使用Google地图API确定我的地址。但是,我的应用程序未能提供HTTP响应。我没有收到任何运行时错误,VS调试器的行为就像我的应用程序已被挂起一样。HTTP响应永远不会返回
1>我不知道这是否是因为我读somehwere它可能是阻塞,异步代码的问题Xamarin.Android
2>的一个问题,但然后我使用相同的代码我的Windows应用程序,它从来没有给我麻烦
using System;
using System.Collections.Generic;
using System.IO;
using System.Net.Http;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;
using System.Text;
using System.Threading.Tasks;
namespace App_Code
{
public class myLocationProxy
{
public static async Task<RootObject_AutoLocationAddress> getmyLocation(string lat, string lng)
{
var http = new HttpClient();
/*CODE STOPS HERE*/var response = await http.GetAsync(String.Format("http://maps.google.com/maps/api/geocode/json?latlng={0},{1}&sensor=false", Uri.EscapeDataString(lat), Uri.EscapeDataString(lng)));
var result = await response.Content.ReadAsStringAsync();
var serializer = new DataContractJsonSerializer(typeof(RootObject_AutoLocationAddress));
var ms = new MemoryStream(Encoding.UTF8.GetBytes(result));
var data = (RootObject_AutoLocationAddress)serializer.ReadObject(ms);
return data;
}
}
[DataContract]
public class AddressComponent_AutoLocationAddress
{
[DataMember]
public string long_name { get; set; }
[DataMember]
public List<string> types { get; set; }
}
[DataContract]
public class Result_AutoLocationAddress
{
[DataMember]
public List<AddressComponent_AutoLocationAddress> address_components { get; set; }
[DataMember]
public string formatted_address { get; set; }
}
[DataContract]
public class RootObject_AutoLocationAddress
{
[DataMember]
public List<Result_AutoLocationAddress> results { get; set; }
[DataMember]
public string status { get; set; }
}
}
你怎么称之为异步方法?尝试在您等待的对'HttpClient'的调用中添加'.ConfigureAwait(false);'。 – Cheesebaron
@ Cheesebaron奇怪我前一阵子试过了,它没有工作。谢谢队友 –
你确定它没有回来吗?因为我的经验,当Xamarin.Android请求失败时,最多可能需要3分钟才能结束请求... – Gusman