ASP.NET Core Web API-如何使用httpclient消费第三方API
在我的ASP.NET Core-6 Web API中,我获得了第三方API,然后返回帐户详细信息。
API:
https://api.thirdpartycompany.com:2233/UserAccount/api/AccountDetail?accountNumber=112123412
标题:
X-GivenID:Given2211
X-GivenName:Givenyou
X-GivenPassword:Given@llcool
然后JSON结果如下:
{
"AccountName": "string",
"CurrentBalance": 0,
"AvailableBalance": 0,
"Currency": "string"
}
到目前为止,我已经做到了:
Balanceenquiryresponse:
public class BalanceEnquiryResponse
{
public string Response
{
get;
set;
}
public bool IsSuccessful
{
get;
set;
}
public List<BalanceList> AccountBalances
{
get;
set;
}
}
Balancelist:
public class BalanceList
{
public string AccountNumber
{
get;
set;
}
public decimal CurrentBalance
{
get;
set;
}
public decimal AvailableBalance
{
get;
set;
}
public string Currency
{
get;
set;
}
}
然后服务如下所示。
idataservice:
public interface IDataService
{
BalanceEnquiryResponse GetAccountBalance(string accountNo);
}
dataService:
public class DataService : IDataService
{
private readonly ILogger<DataService> _logger;
private readonly HttpClient _myClient;
public DataService(ILogger<DataService> logger, HttpClient myClient)
{
_logger = logger;
_myClient = myClient;
}
private void PrepareAPIHeaders()
{
_myClient.DefaultRequestHeaders.Add("X-GivenID", "Given2211");
_myClient.DefaultRequestHeaders.Add("X-GivenName", "Givenyou");
_myClient.DefaultRequestHeaders.Add("X-GivenPassword", "Given@llcool");
_myClient.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type", "application/json; charset=utf-8");
_myClient.DefaultRequestHeaders.TryAddWithoutValidation("Accept", "application/json; charset=utf-8");
}
public BalanceEnquiryResponse GetAccountBalance(string accountNo)
{
_logger.LogInformation("Accessing Own Account");
var url = $"https://api.thirdpartycompany.com:2233/UserAccount/api/AccountDetail?accountNumber={accountNo}";
var responseResults = new BalanceEnquiryResponse();
var response = await _myClient.GetAsync(url);
return response;
}
}
返回与URL,标头和BalanceenquiryResponse有关的响应
使用httpclient,我想首次尝试使用httpclient //www.tutorialsteacher.com/webapi/consuming-web-api-in-dotnet-usis-using-httpclient“ rel =“ nofollow noreferrer”>使用httpclclient在.NET中消耗Web
API :
Cannot implicitly convert type 'System.Net.Http.HttpResponseMessage' to 'BalanceEnquiryResponse'
和响应在返回响应中突出显示
如何纠正错误并在返回响应中实现目标。
谢谢。
In my ASP.NET Core-6 Web API, I am given a third party API to consume and then return the account details.
api:
https://api.thirdpartycompany.com:2233/UserAccount/api/AccountDetail?accountNumber=112123412
Headers:
X-GivenID:Given2211
X-GivenName:Givenyou
X-GivenPassword:Given@llcool
Then JSON Result is shown below:
{
"AccountName": "string",
"CurrentBalance": 0,
"AvailableBalance": 0,
"Currency": "string"
}
So far, I have done this:
BalanceEnquiryResponse:
public class BalanceEnquiryResponse
{
public string Response
{
get;
set;
}
public bool IsSuccessful
{
get;
set;
}
public List<BalanceList> AccountBalances
{
get;
set;
}
}
BalanceList:
public class BalanceList
{
public string AccountNumber
{
get;
set;
}
public decimal CurrentBalance
{
get;
set;
}
public decimal AvailableBalance
{
get;
set;
}
public string Currency
{
get;
set;
}
}
Then the service is shown below.
IDataService:
public interface IDataService
{
BalanceEnquiryResponse GetAccountBalance(string accountNo);
}
DataService:
public class DataService : IDataService
{
private readonly ILogger<DataService> _logger;
private readonly HttpClient _myClient;
public DataService(ILogger<DataService> logger, HttpClient myClient)
{
_logger = logger;
_myClient = myClient;
}
private void PrepareAPIHeaders()
{
_myClient.DefaultRequestHeaders.Add("X-GivenID", "Given2211");
_myClient.DefaultRequestHeaders.Add("X-GivenName", "Givenyou");
_myClient.DefaultRequestHeaders.Add("X-GivenPassword", "Given@llcool");
_myClient.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type", "application/json; charset=utf-8");
_myClient.DefaultRequestHeaders.TryAddWithoutValidation("Accept", "application/json; charset=utf-8");
}
public BalanceEnquiryResponse GetAccountBalance(string accountNo)
{
_logger.LogInformation("Accessing Own Account");
var url = quot;https://api.thirdpartycompany.com:2233/UserAccount/api/AccountDetail?accountNumber={accountNo}";
var responseResults = new BalanceEnquiryResponse();
var response = await _myClient.GetAsync(url);
return response;
}
}
Using HttpClient, I want to return a response in connection with the url, headers and BalanceEnquiryResponse
For the first time I am trying to consume third party API using HttpClient, and I'm following this Consume Web API in .NET using HttpClient
So far, I got this error:
Cannot implicitly convert type 'System.Net.Http.HttpResponseMessage' to 'BalanceEnquiryResponse'
and response is highlighted in return response
How do I correct the error and also achieve my goal in returning the response.
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
基于您的班级,这些小更改应该使您处于修复其余部分的位置:
Based on your class, these small changes should put you in the position to fix the rest: