Невозможно отправить строку как HttpContent

#c# #asp.net #api

#c# #asp.net #API

Вопрос:

Я создал API, который должен иметь возможность подключаться к внешнему API через POST и с телом запроса в виде строки.

Я могу напрямую подключиться к API из Postman без проблем.. Но это не работает через мой собственный API.

Есть идеи?

Это Pastebin.

 private string EncodeExternalApiLink = "https://blabla.dk";
private string EncodeExternalApiLinkPostFilter = "searchstring/blabla/api/search";

[HttpPost("getdata/filtered")]
public async Task<IActionResult> GetDataFromExternalFiltered([FromBody] string filter)
{
    var filterString = new StringContent(filter);

    EncodeExternalToken token = GetExternalToken().Resu<
    using (var client = new HttpClient())
    {
        client.BaseAddress = new Uri(EncodeExternalApiLink);

        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("text/plain"));
        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token.access_token);

        using (var response = await client.PostAsync(EncodeExternalApiLinkPostFilter, filterString))
        {
            return Json(response);
            if (response.IsSuccessStatusCode)
            {
                string content = await response.Content.ReadAsStringAsync();

                return Content(content, "application/json");
            }
            else
            {
                return NotFound();
            }
        }
    }
}
  

Комментарии:

1. Я попытался вернуть ответ, поэтому «return Json (response);» в этом странном месте 🙂 Ответ «false».

2. с какой проблемой вы столкнулись?

3. return Json(response); Как это решает проблему?

4. Сервер возвращает значение «IsSuccessStatusCode» false.. Единственное, что может быть причиной этого, это то, что он получает тело (Через post), которое он не принимает. Я знаю, что он ожидает получить строку, и это то, что я отправляю, в виде «HttpContent», верно? 🙂

5. вздох что вам показывает Fiddler?

Ответ №1:

Приветствия. Возможно, вам потребуется добавить «/» в конец вашего базового адреса EncodeExternalApiLink или в начало EncodeExternalApiLinkPostFilter .

Комментарии:

1. Это не ошибка. Я могу вызвать API из Postman без каких-либо проблем