我很擅长通过网络/套接字/网络流等发送/接收。
我正在制作一个可以与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)。
答案 0 :(得分:3)
对于问题的第一部分,您询问了哪些重要部分
accept
application/vnd.twitchtv.v3+json
标题
GET
请求https://api.twitch.tv/kraken/chat/kraken_test_user
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。我建议将来在这里发布一系列相当广泛的问题时要小心,因为我可以看到这是一个班级可能花一个小时覆盖某个地方的东西,我怀疑你的意图是让其他人做你的功课,正确?