【发布时间】:2023-03-08 14:21:01
【问题描述】:
我有一个async 方法,它在.Net 中反复调用HttpClient。我在下面将我的代码模拟为一个小型控制台应用程序:
private static HttpClient req { get; set; } = new HttpClient();
static async Task Main(string[] args)
{
Console.WriteLine("Please press enter to start healthCheck");
Console.ReadLine();
healthCheck();
Console.ReadLine();
}
private static async Task healthCheck()
{
while (true)
{
req.DefaultRequestHeaders.Add("apikey", "myPassword");
string strUrl = "http://myUrl";
HttpResponseMessage hrm = await req.GetAsync(strUrl);
Console.WriteLine("=> statusCode:" + (int)hrm.StatusCode);
await Task.Delay(5000);
}
}
输出是:
问题是当我使用Postman 或使用python 编写此代码时,每次它都响应200 而不是403。
import requests as req
import time as t
url = "http://adpsms.adpdigital.com/report/?date=2021-08-30"
customHeader = {"apikey": "sssrjdIiGisbViKA"}
i = 10
while (i > 0):
response = req.get(url, headers = customHeader)
print("statusCode: " + str(response.status_code))
i -= 1
t.sleep(5)
我以为这是服务器错误,但当我每次都用 python 回复 200 时,我知道这可能是我的代码或基于客户端的东西有问题。
由于我的项目基于.NET,我想让它在上面运行。
任何建议将不胜感激。
【问题讨论】:
-
在创建 HttpClient 时尝试只添加一次 DefaultRequestHeader。您无需在循环的每次迭代中添加它们。
标签: python c# async-await httpresponse dotnet-httpclient