首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UriFormatException:无效URI:无法解析主机名。C#

问UriFormatException:无效URI:无法解析主机名。C#
EN

Stack Overflow用户
提问于 2020-04-27 18:31:02
回答 1查看 3.8K关注 0票数 0

我正在尝试创建我的web应用程序,我想连接到API。我的Startup.cs文件中有基本地址:

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

但是现在我想在程序中通过向url地址添加一个/search来修改它。我使用的是UriBuilder,它看起来如下:

代码语言:javascript
复制
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:无效URI:无法解析主机名。

我怎么才能解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-27 20:04:43

GetAsync执行GET请求,而您可能希望使用客户端的BaseAddress作为初始Uri来构造:

代码语言:javascript
复制
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();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61465886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档