使用c#

时间:2015-10-27 16:51:04

标签: c# httprequest httpresponse

我很擅长通过网络/套接字/网络流等发送/接收。

我正在制作一个可以与Twitch.tv通信的IRC程序。他们有一个API,他们有各种各样的请求的例子,你可以用来获取不同类型的信息。

https://github.com/justintv/Twitch-API/tree/master/v3_resources

他们的要求的一个例子是:

curl -H 'Accept: application/vnd.twitchtv.v3+json' \
-X GET https://api.twitch.tv/kraken/chat/kraken_test_user

我曾尝试对请求进行一些研究,我对此有所了解,但在大多数情况下,我找不到任何有助于点击它的资源。

在上面的例子中,该请求的重要部分是什么?卷曲? -H?这是一个大命令,还是由第一行末尾的\分隔的两个命令?

那么,最大的问题是,如何使用C#发送上述请求?

编辑1:

我也知道我将在JSON中获得回复。是否有任何内置帮助接收/解析JSON?

还使用PUT来改变一些JSON? (API中的某些内容允许PUT)。

2 个答案:

答案 0 :(得分:3)

对于问题的第一部分,您询问了哪些重要部分

  1. accept
  2. application/vnd.twitchtv.v3+json标题
  3. 这是GET请求
  4. api url:https://api.twitch.tv/kraken/chat/kraken_test_user
  5. c#中的此请求可能如下所示(可能因为有多种方法可以执行此操作)

    private async Task<object> GetRequest(string url)
    {
        var httpClient = new HttpClient();
        httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/vnd.twitchtv.v3+json"));
    
        var response = await httpClient.GetAsync(url);
        var contents = await response.Content.ReadAsStringAsync();
    
        return contents;
    }
    

答案 1 :(得分:0)

请注意,您发布的链接中的文件是Mark描述为Mark的文件:

MD或降价文档是使用Markdown语言的几种可能方言之一创建的文本文件。 MD文件使用纯文本格式,但包括定义如何格式化文本的内联文本符号,用于创作可轻松转换为HTML的纯文本文档。

curl -H 'Accept: application/vnd.twitchtv.v3+json' \
-X GET https://api.twitch.tv/kraken/chat/kraken_test_user

http://curl.haxx.se/docs/manpage.html解释了curl命令是什么,然后有2个开关,H和X.引用链接:

  

-H, - 标题

     

(HTTP)在向HTTP发送HTTP时要包含在请求中的额外标头   服务器。您可以指定任意数量的额外标头。请注意,如果你   应该添加一个与其中一个名称相同的自定义标头   内部卷曲将使用,您的外部设置标题将被使用   而不是内部的。这让你变得更加棘手   比卷曲通常会做的东西。你不应该在内部替换   设置标题而不完全清楚你正在做什么。去掉   一个内部标题,通过给出一个没有内容的替换   结肠的右侧,如:-H&#34;主持人:&#34;。如果您发送自定义   如果标头没有值,则其标头必须以a终止   分号,例如-H&#34; X-Custom-Header;&#34;发送&#34; X-Custom-Header:&#34;。

     

curl将确保您添加/替换的每个标头都随之发送   正确的行尾标记,因此你不应该将其作为一部分添加   标题内容:不添加换行符或回车符,它们会   只为你搞砸了。

     

另请参阅-A, - user-agent和-e, - feedback选项。

     

从7.37.0开始,您需要--proxy-header来发送自定义标头   用于代理。

     

示例:

     

#curl -H&#34; X-First-Name:Joe&#34; http://192.168.0.1/

     

警告:使用此选项设置的标头将在所有请求中设置 -   即使在重定向之后,就像告诉-L, - location。   这可能导致标头被发送到除了之外的其他主机   原始主机,因此应谨慎使用敏感标头   结合以下重定向。

     

此选项可多次使用以添加/替换/删除多个   头。

&#34; \&#34;使下一行添加到第一行。

  

-X, - request

     

(HTTP)指定通信时要使用的自定义请求方法   与HTTP服务器。将使用指定的请求方法   而不是使用其他方法(默认为GET)。阅读   有关详细信息和说明的HTTP 1.1规范。常见附加   HTTP请求包括PUT和DELETE,但相关的技术包括   WebDAV提供PROPFIND,COPY,MOVE等。

     

通常您不需要此选项。各种GET,HEAD,POST和   通过使用专用命令行来调用PUT请求   选项。

     

此选项仅更改HTTP请求中使用的实际单词   不会改变卷曲的行为方式。所以,例如,如果你想   使用-X HEAD做出正确的HEAD请求是不够的。你需要   使用-I, - head选项。

     

使用-X设置的方法字符串将用于所有请求   如果您使用-L, - location可能会导致意外   当curl没有根据改变请求方法时的副作用   HTTP 30x响应代码 - 和类似的。

     

(FTP)指定在执行时使用的自定义FTP命令而不是LIST   FTP文件列表。

     

(POP3)指定要使用的自定义POP3命令,而不是LIST或RETR。   (在7.26.0中添加)

     

(IMAP)指定要使用的自定义IMAP命令而不是LIST。 (添加   在7.30.0)

     

(SMTP)指定要使用的自定义SMTP命令,而不是HELP或VRFY。   (在7.34.0中添加)

     

如果多次使用此选项,将使用最后一个选项。

在C#中,有一个WebRequest类,https://msdn.microsoft.com/en-CA/library/456dfw4f(v=vs.110).aspx有一个很好的例子,说明如何使用它从给定的URL获取数据。

至于处理JSON,请查看http://www.newtonsoft.com/json这是一个用于解析JSON响应的相当常见的库。 PUT将是用于告诉服务器如何处理请求的HTTP动词,如GET或POST。我建议将来在这里发布一系列相当广泛的问题时要小心,因为我可以看到这是一个班级可能花一个小时覆盖某个地方的东西,我怀疑你的意图是让其他人做你的功课,正确?