簡體   English   中英

從 Web 服務 (ASMX) 調用第三方 API

[英]Thirdparty API invoke from Web Service (ASMX)

我有一個從第三方應用程序調用 API 的場景。 但是由於請求是通過使用 HTTPClient,它是異步的,因此我無法向 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 調用 $('#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 () {
            }
        });
    });

請幫忙解決這個問題

await關鍵字只能在async方法中使用。 據我所知, WebMethod不能是異步的。 你必須對你的變化await s到.Result或其他人說.GetAwaiter().GetResult()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM