【发布时间】:2018-05-01 21:30:12
【问题描述】:
我有这个 REST api (GET),它在浏览器中运行良好并吐出 JSON。我什至使用 XMLHTTP 在 Excel-VBA 中尝试了相同的 API,它工作正常。
但是当我尝试在 C# 中使用相同的 API 时,我遇到了错误。
首先我得到:
“底层连接已关闭:发生意外错误 发送。”
就行了
HttpResponseMessage response = client.GetAsync(urlParameters).Result;
然后我将安全协议设置为“Tls11”,该错误消失了。
现在我正在回复404。网址是正确的。我可以在 Web 浏览器/VBA 中运行相同的 URL,但不能在 C# 中运行。
有什么建议或帮助吗?
抱歉,无法分享与工作相关的实际网址。
private const string URL = "https://xxx-production-api.abc.com/api/listings/1790956";
private string urlParameters = "?apiToken=64842d73-9761-456b-86fa-a75a409273ce";
public string Download()
{
HttpClient client = new HttpClient();
client.BaseAddress = new Uri(URL);
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Add("Accept-Language", "en-GB,en-US;q=0.8,en;q=0.6,ru;q=0.4");
// List data response.
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11;
HttpResponseMessage response = client.GetAsync(urlParameters).Result; // Blocking call!
if (response.IsSuccessStatusCode)
Console.WriteLine("Worked");
else
Console.WriteLine("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase);
}
【问题讨论】:
-
当服务返回 404(未找到)时,很难说 URL 正确。 URL 不正确,或者服务错误地返回 404(在这种情况下,我们可能无能为力)。
-
尝试将接受标头留空。不要请求 application/json,可能服务返回的是 JSON 格式的明文。
-
@brank 已经尝试过了 :)。我正处于您随机评论/取消评论行并希望它有效的阶段。还没有运气。
-
您的浏览器中是否有任何类型的身份验证令牌或cookie?我曾经在浏览器中运行时遇到了一个问题,因为我已登录并不知不觉地传递了一个 cookie。
-
@DanWilson,不。完全在另一个浏览器中尝试过。相同的 url 也适用于 VBA。 C# 可能需要不同的东西。