我正在尝试将Http Get消息发送到Google位置Api,该位置应该包含此类Json数据
https://maps.googleapis.com/maps/api/geocode/json?address=Los%20Angeles,CA=AIzaSyDABt 你注意到答案是在Json。我想给该URL发出一个Http调用,并将Json内容保存在变量或字符串中。我的代码没有给出任何错误,但它也没有返回任何内容
public async System.Threading.Tasks.Task<ActionResult> GetRequest()
{
var client = new HttpClient();
HttpResponseMessage response = await client.GetAsync("https://maps.googleapis.com/maps/api/geocode/json?address=Los%20Angeles,CA=AIzaSyDABt");
string data = response.Content.ToString();
return data;
}
我想使用HttpClient()或任何发送URL请求的内容发送一个Get Request,然后将该内容保存到字符串变量中。任何建议将不胜感激,我的代码再次没有错误,但它没有返回任何东西。
答案 0 :(得分:0)
试试这个。
var client = new HttpClient();
HttpResponseMessage httpResponse = await client.GetAsync("https://maps.googleapis.com/maps/api/geocode/json?address=Los%20Angeles,CA=AIzaSyDABt");
string data = await httpResponse.Content.ReadAsStringAsync();
答案 1 :(得分:0)
使用ReadAsStringAsync获取json响应...
static void Main(string[] args)
{
HttpClient client = new HttpClient();
Task.Run(async () =>
{
HttpResponseMessage response = await client.GetAsync("https://maps.googleapis.com/maps/api/geocode/json?address=Los%20Angeles,CA=AIzaSyDABt");
string responseString = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseString);
});
Console.ReadLine();
}
如果您使用response.Content.ToString()
,它实际上是将内容的数据类型转换为字符串,以便您获得System.Net.Http.StreamContent
答案 2 :(得分:0)
如何使用由Newtonsoft提供支持的.NET Json framework? 您可以尝试使用此内容将内容解析为字符串。
答案 3 :(得分:0)
嗯,您的代码可以简化:
public async Task<ActionResult> GetRequest()
{
var client = new HttpClient();
return await client.GetStringAsync("https://maps.googleapis.com/maps/api/geocode/json?address=Los%20Angeles,CA=AIzaSyDABt");
}
...然而
我的代码没有发出任何错误,但它也没有返回任何内容
这几乎可以肯定是由于在调用堆栈中使用了Result
或Wait
。 Blocking on asynchronous code like that causes a deadlock我在博客上全面解释。简短版本是有一个ASP.NET请求上下文,一次只允许一个线程;默认情况下,await
将捕获当前上下文并在该上下文中恢复;由于Wait
/ Result
阻止请求上下文中的线程,await
无法继续执行。
答案 4 :(得分:-1)
试试这个
ready