在Android devide,Xamarin上进行调试时无效的请求

时间:2018-01-24 17:48:23

标签: android json xamarin webrequest

我正在用Xamarin Forms编写项目,今天我们在Android设备上试用我们的应用程序。我们要求googleAPI停止工作。这是代码:

HttpWebRequest webRequest = WebRequest.Create(@"https://maps.googleapis.com/maps/api/place/search/json?location=" + position.Latitude + "," + position.Longitude + "&radius=1000&types=bar&sensor=false&key=APIKEY") as HttpWebRequest;
webRequest.Method = "GET";
webRequest.BeginGetResponse(new AsyncCallback(RequestCompleted), webRequest);

然后:

var request = (HttpWebRequest)result.AsyncState;
var response = (HttpWebResponse)request.EndGetResponse(result);
using (var stream = response.GetResponseStream())
{
var r = new StreamReader(stream);
var resp = r.ReadToEnd();
}

我们得到了回复并将其更改为json。在计算机上它工作正常,但在Android上它说无效请求。有人和Xamarin一起工作并且知道如何解决它?

1 个答案:

答案 0 :(得分:3)

如果我不得不猜测,我猜,手机上的语言环境/语言与您电脑上的语言环境/语言不同。

HttpWebRequest webRequest = WebRequest.Create(@"https://maps.googleapis.com/maps/api/place/search/json?location=" + position.Latitude + "," + position.Longitude + "&radius=1000&types=bar&sensor=false&key=APIKEY") as HttpWebRequest; 

ToString()处的隐式...n=" + position.Latitude + "," + position.Longitude + "&ra...会产生本地化输出。但是谷歌API需要.作为小数点分隔符的值。

附加.ToString("G", CultureInfo.InvariantCulture)

HttpWebRequest webRequest = WebRequest.Create(@"https://maps.googleapis.com/maps/api/place/search/json?location=" + 
position.Latitude.ToString("G", CultureInfo.InvariantCulture) + 
"," + position.Longitude.ToString("G", CultureInfo.InvariantCulture) +
"&radius=1000&types=bar&sensor=false&key=APIKEY") as HttpWebRequest;