Сторонний API-вызов из веб-службы (ASMX) - PullRequest
0 голосов
/ 17 марта 2020

У меня есть сценарий для вызова API из стороннего приложения. Но поскольку запрос выполняется с помощью HTTPClient, он асин c, и поэтому я не могу вернуть правильное значение в запрос Ajax.

Вот мой код

    [WebMethod]
    public string getSampleData()
    {

        string url = "https://api.thirdparty.com/eport/?Key=200&resultsPerPage=1000";


        using (HttpClient client = new HttpClient(new HttpClientHandler())) 
        {
            var plainTextBytes = System.Text.Encoding.UTF8.GetBytes("sabcd@test.com:TEst12345");// ("sabcd@test.com:Pwd123"); 
            string val = System.Convert.ToBase64String(plainTextBytes);
            client.DefaultRequestHeaders.Add("Authorization", "Basic " + val);

            ServicePointManager.Expect100Continue = true;
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;

            try
            {
                using (HttpResponseMessage response = await client.GetAsync(url))
                {
                    response.EnsureSuccessStatusCode();
                    string responseBody = await response.Content.ReadAsStringAsync();
                    string k = responseBody;
                    return k;
                }
                return "";
            }
            catch (Exception ex)
            {
                return ex.Message;
            }


        }


    }

Но это просто вызывает ошибку, поскольку await там не работает. Итак, как я могу разобраться с ситуацией без каких-либо проблем.

Вот мой AJAX call $ ('# btn_keyedin'). Click (function () {

        $.ajax({
            url: '../webservice1.asmx/getSampleData',
            type: 'POST',
            contentType: 'application/json',
            datatype: 'JSON',
            success: function (data) {
                console.log(JSON.stringify(data));
            },
            error: function () {
            }
        });
    });

Пожалуйста помогите решить эту проблему

1 Ответ

1 голос
/ 17 марта 2020
Ключевое слово

await может использоваться только в методах async. Насколько я знаю, WebMethod не может быть асин c. Вам придется изменить await s на .Result или, как говорили другие люди .GetAwaiter().GetResult().

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