C # HttpClient POST запрос ответа на запрос

2

Мне нужно сделать POST-запрос к API, который получает параметры username, password и productId. Я создал эту часть, и она работает нормально, но как я могу обработать ответ, когда параметры отправки верны, API возвращает статус 200 и объект продукта. В другом случае, когда параметры отправки неверны, API возвращает 200 и объект json, как показано ниже:

{
    "Username": {
        "Messages": [
            "The Username field is required."
        ]
    },
    "Password": {
        "Messages": [
            "The Password field is required."
        ]
    },
    "ProductId": {
        "Messages": [
            "The productId field is required."
        ]
    }
}

так как я могу справиться с чем-то вроде этого.

Это мой код для запроса POST:

public async Task<string> PostProductId(string path)
{
    using (var client = GetHttpClient())
    {
        string content = null;
        try
        {
            string endpoint = path;

            string requestJson = JsonConvert.SerializeObject(bodyObject);
            HttpContent httpContent = new StringContent(requestJson, Encoding.UTF8, "application/json");

            var response = await client.PostAsync(endpoint, httpContent);

            content = response.Content.ReadAsStringAsync();

        }
        catch (HttpRequestException ex)
        {
            Console.WriteLine("ERROR: " + ex.Message);
            return null
        }
        return content;
    }
}
  • 0
    Определите «ручку». Вы хотите разобрать JSON?
  • 0
    Вы говорите: «если параметры отправки неверны, API возвращает 200». так ты всегда получаешь ответ 200 и никаких исключений?
Показать ещё 2 комментария
Теги:
dotnet-httpclient

1 ответ

0

Чтобы вернуть статус и объект, вы можете использовать IHttpActionResult.

Вы можете сделать что-то подобное без тестирования:

public async Task<IHttpActionResult> PostProductId(string path)
{
    using (var client = GetHttpClient())
    {
        string content = null;
        try
        {
            string endpoint = path;

            string requestJson = JsonConvert.SerializeObject(bodyObject);
            HttpContent httpContent = new StringContent(requestJson, Encoding.UTF8, "application/json");

            var response = await client.PostAsync(endpoint, httpContent);

            content = response.Content.ReadAsStringAsync();

        }
        catch (HttpRequestException ex)
        {
            Console.WriteLine("ERROR: " + ex.Message);
            return InternalServerError(ex);
        }
        return Ok(content);
    }
}

Некоторые Ref:

Ещё вопросы

Сообщество Overcoder
Наверх
Меню