У меня есть веб-API, который скрывается на лазурном.получить запрос от почтальона и просто получить запрос.Но это не работает с C # HTTP получить вызов - PullRequest
0 голосов
/ 09 июля 2019

У меня есть веб-интерфейс https://itcportalapi.azurewebsites.net/portal/api/User/GetSecurityQuestions

, который размещен в веб-приложении Azure.Теперь он работает в простом режиме вызова через браузер и почтальон.но это не работает через HTTP-вызов async.

Remort сервер отладки, но та же проблема.ранее в каком-то другом аккаунте Azure работал такой же код.тот же код веб-API, работающий на локальном компьютере, может использовать c # HTTP для получения асинхронного кода.

public static async Task<string> ApiRequest(string url)
{
    HttpResponseMessage responseMessage = null;
    string responseObj = string.Empty;
    using (HttpClient client = new HttpClient())
    {
        try
        {
            client.BaseAddress = new Uri(url);
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(Constants.JSONContentType));
            responseMessage = await client.GetAsync(url);
            if (responseMessage.IsSuccessStatusCode)
            {
                responseObj = responseMessage.Content.ReadAsStringAsync().Result;
            }
            else
            {
                log.Error("ApiRequest -the current request URL " + url + " and Status Code:" + responseMessage.StatusCode + responseMessage.ReasonPhrase);
            }
        }
        catch (Exception ex)
        {
            log.Error("ApiRequest:" + ex.Message + ex.StackTrace);
        }
        return responseObj;
    }
}
public async Task<ActionResult> ForgotPassword()
{
    UserSecurityQuestion model = new Models.UserSecurityQuestion();
    model.SQuestions = await this.GetSecurityQuestions();
    return View(model);
}

, за исключением следующего исключения, которое размещено в веб-приложении Azure.Теперь он работает в простом режиме вызова через браузер и почтальон.но он не работает через HTTP-асинхронный вызов get.

1 Ответ

1 голос
/ 09 июля 2019

Вот рабочий пример, хотя я бы не использовал HttpClient, используйте IHttpClientFactory, так что читайте об этом.

       var client = new HttpClient();

        client.BaseAddress = new Uri("https://itcportalapi.azurewebsites.net/");
        client.DefaultRequestHeaders.Clear();

        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));


        var request = new HttpRequestMessage(HttpMethod.Get, "portal/api/User/GetSecurityQuestions");
        request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));


        using (var response = await client.SendAsync(request))
        {

            if (response.IsSuccessStatusCode)
            {
                var content = await response.Content.ReadAsStringAsync();

            }
            else
            {

            }



        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...