C # HttpClient POST запрос ответа на запрос - PullRequest
2 голосов
/ 11 апреля 2019

Мне нужно сделать 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;
    }
}

1 Ответ

0 голосов
/ 11 апреля 2019

Чтобы вернуть статус и объект, вы можете использовать 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:

...