【发布时间】:2020-05-24 08:36:35
【问题描述】:
我在 RapidAPI 上订阅了Computer Vision API。当我在 RapidAPI 平台上测试 API 时,它运行良好。但是当我从我的应用程序中调用它时,它会响应 400 Bad request。
我该如何解决这个问题?
我正在使用 RESTSharp 库。
这是我的代码 -
public static IRestResponse GetClassifiedImageData()
{
var client = new RestClient("{Client Path}");
var request = new RestRequest(Method.POST);
request.AddHeader("x-rapidapi-host", "{Rapid API host}");
request.AddHeader("x-rapidapi-key", "{My API key}");
request.AddHeader("content-type", "application/json");
request.AddHeader("accept", "application/json");
request.AddParameter("application/json", "{\"url\":\"Image URL\"}", ParameterType.RequestBody);
return client.Execute(request);
}
如果我异步调用,我会收到这条消息 -
System.Runtime.CompilerServices.AsyncTaskMethodBuilder
1+AsyncStateMachineBox1[System.String,ComputerVision.Program+d__2]
异步代码-
public static async Task<IRestResponse> GetClassifiedImageData2()
{
var client = new RestClient("{Client Path}");
var request = new RestRequest(Method.POST);
request.AddHeader("x-rapidapi-host", "{Rapid API host}");
request.AddHeader("x-rapidapi-key", "{My API key}");
request.AddHeader("content-type", "application/json");
request.AddHeader("accept", "application/json");
request.AddParameter("application/json", "{\"url\":\"Image URL\"}", ParameterType.RequestBody);
return await client.ExecuteAsync(request);
}
这些我都试过了-
- 重新启动 Visual Studio。
- 清理临时文件和预取文件。
【问题讨论】:
-
您的标题错误。使用像 wireshark 或 fiddler 这样的嗅探器,并将 api 请求与您的请求进行比较。然后修改您的标头以匹配 api 标头。
-
您必须查看请求而不是响应。糟糕的响应是由于请求造成的。看起来 Postman 和 c# 中“代码”请求中的标头不同。
-
我什么都不懂。你所说的一切都超出了我的想象。 :(你能给我一些资源来理解吗?或者你能详细说明一下吗?
-
大家都用过嗅探器吗?您可以从网上免费下载 wireshark 或 fiddler。嗅探器将提供通过 Internet 发送的实际消息,以便您查看实际发送和接收的消息。
-
嗨!我安装了提琴手,这是一个快照,我什么都不懂。 ????????? imgur.com/a/pJqUxAa
标签: c# azure computer-vision azure-cognitive-services bad-request