UriFormatException: неверный URI: имя хоста не может быть проанализировано. MVC API C# - PullRequest
0 голосов
/ 27 апреля 2020

Я пытаюсь создать свое веб-приложение и хочу подключиться к 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: Неверный URI: не удалось проанализировать имя хоста.

Как я могу это исправить?

1 Ответ

0 голосов
/ 27 апреля 2020

GetAsync выполняет запрос 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();
...