UriFormatException: 无效的URI。主机名无法被解析。MVC API C#

我正试图创建我的Web应用程序,我想连接到API。我有一个基本地址在我的 Startup.cs 文件。

services.AddHttpClient("API Client", client =>
{
    client.BaseAddress = new Uri("https://icanhazdadjoke.com/");
    client.DefaultRequestHeaders.Add("Accept", "application/json");
});

但现在我想在程序中改变它,增加一个… … /search 到url地址。我使用的是 UriBuilder 它看起来像这样。

string responseBody = "";
var client = _httpClientFactory.CreateClient("API Client");
var builder = new UriBuilder(client.GetAsync("") + "/search");
var query = HttpUtility.ParseQueryString(builder.Query);
query.Add("term", searchedTerm);
query.Add("limit", jokesPerPage);

builder.Query = query.ToString();
string url = builder.ToString();
responseBody = await client.GetStringAsync(url);
return JsonConvert.DeserializeObject<JokeModel>(responseBody);

我收到一个错误:

UriFormatException: Invalid URI: 主机名无法被解析。

我如何解决这个问题?

解决方案:

GetAsync 执行一个GET请求,而你大概想使用客户端的GET请求。BaseAddress 作为构建的初始Uri。

var builder = new UriBuilder(client.BaseAddress);
builder.Path = "/search";
var query = HttpUtility.ParseQueryString(builder.Query);
query.Add("term", searchedTerm);
query.Add("limit", jokesPerPage);

builder.Query = query.ToString();
string url = builder.ToString();

给TA打赏
共{{data.count}}人
人已打赏
未分类

Java如何给文件添加新行[重复]?

2022-9-13 14:51:37

未分类

计算一个超串中包含多少个子串。

2022-9-13 14:51:39

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索