使用c#的HTTP请求
本文关键字:请求 HTTP 使用 | 更新日期: 2023-09-27 18:19:32
我对通过网络/套接字/网络流等发送/接收相当陌生
我正在制作一个IRC程序,可以与Twitch.tv通信。他们有一个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)。
对于问题的第一部分,您问的重要部分是什么
- 它具有
application/vnd.twitchtv.v3+json
的accept
标头 - 这是
GET
请求 - api url:
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;
}
注意,你发布的链接中的文件是谷歌描述为:的Mark Down文件
MD或markdown文档是使用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命令是什么,然后有两个开关,H和X。其中引用链接:
-H、 --标头
(HTTP)向服务器您可以指定任意数量的额外标头。请注意,如果应该添加一个与curl将使用的内部标头,将使用外部设置的标头而不是内部的。这让你变得更加棘手比卷曲正常情况下要多的东西。你不应该在内部更换在不完全清楚自己在做什么的情况下设置标题。去除通过在冒号的右侧,如:-H"主机:"中所示。如果您发送自定义没有值的标头,则其标头必须以分号,例如-H"X-Custom-Header;"以发送"X-Custom-Header:"。
curl将确保添加/替换的每个标头都发送适当的行结束标记,因此不应将其添加为表头内容:不要添加换行符或回车符,它们会只会把事情搞砸。
另请参阅-A、--user-agent和-e、--referer选项。
从7.37.0开始,您需要--proxy标头来发送自定义标头用于代理。
示例:
#curl-H"X名字:Joe"http://192.168.0.1/
警告:使用此选项设置的标头将在所有请求中设置-即使在遵循重定向之后,就像用-L,--location告知时一样。这可能导致标头被发送到原始主机,因此应谨慎使用敏感标头结合以下重定向。
此选项可多次用于添加/替换/删除多个标头。
"''"使下一行添加到第一行。
-X、 --请求
(HTTP)指定通信时要使用的自定义请求方法使用HTTP服务器。将使用指定的请求方法而不是另外使用的方法(默认为GET)。阅读HTTP 1.1规范的详细信息和解释。普通附加HTTP请求包括PUT和DELETE,但相关技术如WebDAV提供PROPFIND、COPY、MOVE等功能。
通常情况下,您不需要此选项。各种GET、HEAD、POST和PUT请求是通过使用专用命令行来调用的选项。
此选项仅更改HTTP请求中使用的实际单词不会改变卷曲的行为方式。例如,如果你想发出正确的HEAD请求,使用-X 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,用于告诉服务器如何处理请求。我建议以后在这里发布一系列相当广泛的问题时要小心,因为我认为这是一个班级可能会花一个小时讨论的问题,我怀疑你的意图是让别人做你的家庭作业,对吧?