gpt4 book ai didi

c# - HttpClient InternalServerError 500 - 适用于 postman ,但不适用于代码

转载 作者:行者123 更新时间:2023-12-05 08:08:18 27 4
gpt4 key购买 nike

我正在尝试将 GET 请求发送到以下 API 端点:

https://api.mediahound.com/1.3/search/all?PARAM_STRING
https://api.mediahound.com/1.3/graph/lookup?params=PARAMS_JSON

第一个使用以下代码(在 postman 和 c# 中)工作得很好:

var baseUri = new Uri("https://api.mediahound.com/1.3/search/all/");
using (var client = new HttpClient())
{
var res = "";
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", _oAuth2.Token);
Task task = Task.Run(async () => { res = await client.GetStringAsync(baseUri + searchInput + "?type=movie"); });
task.Wait();
.....
}

第二个我无法开始工作,它给了我一个 InternalServerError 响应。目前看起来像这样:

public async Task<ObservableCollection<Movie>> GetMoviesAsync(string id)
{
var baseUri = new Uri("https://api.mediahound.com/1.3/graph/lookup?params=");
using (var client = new HttpClient())
{
var param = "{\n\"ids\":\n[\"" + id + "\"],\n\"components\":\n[\"primaryImage\",\n\"keyTraits\"]\n}";
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", _oAuth2.Token);
var res = await client.GetAsync(baseUri + param);
if(!res.IsSuccessStatusCode)
{
throw new Exception("HttpClient Error: " + res.StatusCode); //InternalServerError 500
}
var content = await res.Content.ReadAsStringAsync();
.....
}
}

只需将 baseUri + param 复制粘贴到 postman 中,即可获得所需的结果,但无论我做什么,我都无法在程序中复制它,并且我不确定应该如何继续调试问题。

有人有什么好主意吗?

最佳答案

所以我想通了这个问题。似乎 postman 会自动转义 url 中的引号等,但 c# 不会。我通过在 param 上添加 Uri.EscapeUriString() 解决了这个问题。

关于c# - HttpClient InternalServerError 500 - 适用于 postman ,但不适用于代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49987127/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com