第三方 API 从 Web 服务 (ASMX) 调用
Thirdparty API invoke from Web Service (ASMX)
我有一个场景可以从第三方应用程序调用 API。但是由于请求是通过使用 HTTPClient 进行的,它是异步的,因此我无法 return 将值更正为 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(函数(){
$.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
更改为 .Result
或如其他人所说 .GetAwaiter().GetResult()
。
我有一个场景可以从第三方应用程序调用 API。但是由于请求是通过使用 HTTPClient 进行的,它是异步的,因此我无法 return 将值更正为 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(函数(){
$.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
更改为 .Result
或如其他人所说 .GetAwaiter().GetResult()
。