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