C# 用C使用restapi#
我对C#非常陌生,想学习如何进行HTTP请求。我想从一开始就很简单,尽管我现在一直在逃避。我只想在google.com上做一个简单的尝试。我创建了一个命令行应用程序,并有以下代码。根本不确定需要使用哪些 我通过向控制台写入来测试它,但它没有通过响应。有人能给我介绍一下吗?我想做一些简单的curl类型的东西来测试现有的API。谢谢你的帮助C# 用C使用restapi#,c#,http,rest,C#,Http,Rest,我对C#非常陌生,想学习如何进行HTTP请求。我想从一开始就很简单,尽管我现在一直在逃避。我只想在google.com上做一个简单的尝试。我创建了一个命令行应用程序,并有以下代码。根本不确定需要使用哪些 我通过向控制台写入来测试它,但它没有通过响应。有人能给我介绍一下吗?我想做一些简单的curl类型的东西来测试现有的API。谢谢你的帮助 using System; using System.Collections.Generic; using System.Linq; using System.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.IO;
namespace APItest
{
class testClass
{
static void Main(string[] args)
{
string url = "http://www.google.com";
Console.WriteLine(url);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Console.ReadKey();
}
}
}
我不建议使用HTTPWebRequest/HTTPWebResponse来使用.Net中的web服务。更易于使用。您需要阅读响应:
var stream=response.GetResponseStream()代码>
然后你有了你的流,并用它做你需要的事情。
我会考虑改用它,它是为了在.NET4中更轻松地调用RESTAPI而创建的。它还支持async
和wait
您可以这样调用它(使用异步):
异步任务GetGoogle(){
HttpClient=新的HttpClient();
Uri=新的Uri(“http://www.google.com");
var result=await client.GetAsync(uri);
返回结果;
}
您正在寻找的是WebClient
类。它有一组丰富的方法来执行大多数与HTTP相关的任务,链接到下面的完整文档
我觉得你的代码不错。
request.GetResponse()是否挂起?也就是说,您确定程序不仅仅在等待ReadKey()
中的击键吗?是的,它挂起在GetResponse。我在那里有一个Console.WriteLine,只是为了测试(为了清楚起见,上面没有显示)。如果您对使用async..await
没问题,那么HttpClient
API可能更简单:(例如,您只需调用var responseBody=await new HttpClient().GetStringAsync(url)
特别是因为您似乎已经打算使用系统、线程、任务了。您认为这是环境问题吗,例如代理…?如果您在windows环境中,您是否在运行代码时尝试运行fiddler并查看是否有任何请求被捕获?我似乎在工作时得到了响应。Wh恩,我在酒店网络上,它对我不起作用。你知道为什么吗?谢谢。问题是我甚至无法通过响应行。如果我在响应后添加Console.WriteLine(“测试”);它将永远不会写入控制台。我测试了你的代码,它工作正常…通过了请求,一直到readKey。。。
async Task<HttpResponseMessage> GetGoogle() {
HttpClient client = new HttpClient();
Uri uri = new Uri("http://www.google.com");
var result = await client.GetAsync(uri);
return result;
}