【发布时间】:2020-04-06 06:48:40
【问题描述】:
我正在尝试调用以下 URL,它在浏览器 (Chrome) 和 Postman 中都可以正常工作,但由于某种原因,它在 C# 中不起作用。
在浏览器中工作:
http://AJWKBLWT47VR26QWPNFCPJLXC6217F6F@presta.craftingcrow.com/api/categories
在 Postman 工作:
http://AJWKBLWT47VR26QWPNFCPJLXC6217F6F@presta.craftingcrow.com/api/categories
不适用于 C# (RestSharp):
var client = new RestClient("http://AJWKBLWT47VR26QWPNFCPJLXC6217F6F@presta.craftingcrow.com/api/categories");
var request = new RestRequest(Method.GET);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("User-Agent", @"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36");
IRestResponse response = client.Execute(request);
附:如果我删除 User-Agent 它仍然不起作用。为什么我在这里做错了?
【问题讨论】:
-
好吧,根据内容,您似乎收到了
401错误,因此您可能需要发送某种Authorization标头。您如何在邮递员/浏览器中验证该端点? -
正如@Joshua 指出的那样,缺少身份验证。该信息被附加到网址上。将其移至授权标头:request.AddHeader("Authorization", "Basic" + Convert.ToBase64String(Encoding.Default.GetBytes("AJWKBLWT47VR26QWPNFCPJLXC6217F6F:"));
-
谢谢你们!这正是我所缺少的。我不确定为什么它在没有任何授权标头的情况下在 Postman 中工作。添加此代码 sn-p 后,它就像一个魅力。