下午好,我只是无法弄清楚 GET 请求的正确执行。有一个 API 可以让我使用 curl 毫无问题地获取数据:
curl -H "X-Auth-Token: LocalTocken" -H "X-User-Id: LocalID" https://api.local/tables?tableName=myTable
请求返回正确的数据。我正在尝试在 C# 中执行一个简单的查询:
using (var httpClient = new HttpClient())
{
using (var request = new HttpRequestMessage(new HttpMethod("GET"), "https://api.local/tables?tableName=myTable"))
{
request.Headers.TryAddWithoutValidation("X-Auth-Token", "LocalTocken");
request.Headers.TryAddWithoutValidation("X-User-Id", "LocalID");
var response = await httpClient.SendAsync(request).Result;
Console.WriteLine(response);
}
}
结果,我得到了 abracadabra:
StatusCode: 200, ReasonPhrase: 'OK', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
Vary: Accept-Encoding
x-xss-protection: 1
x-instance-id: 2sdf5dsdfesdf6fp2DS
pragma: no-cache
Strict-Transport-Security: max-age=31536000; includeSubDomains
Cache-Control: no-store
Date: Wed, 06 May 2020 09:45:58 GMT
Server: nginx/1.17.9
Content-Language: ru
Content-Type: application/json
}
在哪里可以看到同步 GET 和 POST 请求的最简单示例?
这是错误:
这就是为什么我不喜欢关键字的原因
var
,它极大地阻碍了这样的捕捉。您可以像这样阅读答案。
你也很可能有一个错字
"LocalTocken"
,可能应该是"LocalToken"
。此外
不要
HttpClient
为每个请求创建,它的实例只会为你填满所有的套接字,你只会失去连接。这是在文档中的代码示例中编写的。创建一个全局
HttpClient
并在需要时使用它。不需要处理它,尽管它IDisposable
是 ,但如果你愿意,你可以Dispose()
在应用程序结束时调用它,它本质上只是取消活动的 HTTP 请求,执行CancelPendingRequests()
。