Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用C使用restapi#_C#_Http_Rest - Fatal编程技术网

C# 用C使用restapi#

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.

我对C#非常陌生,想学习如何进行HTTP请求。我想从一开始就很简单,尽管我现在一直在逃避。我只想在google.com上做一个简单的尝试。我创建了一个命令行应用程序,并有以下代码。根本不确定需要使用哪些

我通过向控制台写入来测试它,但它没有通过响应。有人能给我介绍一下吗?我想做一些简单的curl类型的东西来测试现有的API。谢谢你的帮助

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;
}