c# - 如何使用 C# 代码为 API 传递标头和正文信息
问题描述
我将使用 put 方法从 C# 代码生成电子发票。我已经使用邮递员工具在沙箱环境中测试了电子发票 api。它按照我们的要求工作正常。我想知道如何传递 API 标头信息和正文来自 C# 代码的信息
Header :-
Content-Type : application/json
owner_id: zxererer45454545_4545456
gstin : 29AAFCD5862R000
Body :-
[
{
"transaction": {
"Version": "1.03",
"TranDtls": {
"TaxSch": "GST",
"SupTyp": "B2B",
"RegRev": "Y",
"EcmGstin": null,
"IgstOnIntra": "N"
},
"DocDtls": {
"Typ": "INV",
"No": "AS/20/0009",
"Dt": "08/09/2020"
},
"SellerDtls": {
"Gstin": "29AAFCD5862R000",
"LglNm": "K.H Exports India Private Limited",
"TrdNm": "K.H Exports India Private Limited",
"Addr1": "142/1,Trunk Road",
"Addr2": "142/1,Trunk Road",
"Loc": "Perumugai",
"Pin": "560037",
"Stcd": "29",
"Ph": "04162253164",
"Em": "edp.kharind@khindia.com"
},
]
使用以下代码时收到错误消息,请查看随附的屏幕截图
解决方案
您可以使用 HttpClient 向 C# 中的 API 发出请求。下面是一个示例代码
public async Task<TResponse> SendPutRequestAsync<TRequest, TResponse>(TRequest data, string url, string accessToken = null)
{
var httpClient = new HttpClient
{
BaseAddress = "BaseAddress of your API"
};
if (!string.IsNullOrWhiteSpace(accessToken))
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
httpClient.DefaultRequestHeaders.Add("HeaderKey", "HeaderValue");
var response = await httpClient.PutAsJsonAsync(url, data);
if (response.IsSuccessStatusCode)
return JsonConvert.DeserializeObject<TResponse>(await response.Content.ReadAsStringAsync());
else
throw new HttpRequestException(response.ReasonPhrase);
}
这是请求正文中的扩展添加数据。
public static class HttpClientExtensions
{
public static Task<HttpResponseMessage> PutAsJsonAsync<T>(this HttpClient httpClient, string url, T data)
{
var dataAsString = JsonConvert.SerializeObject(data);
var content = new StringContent(dataAsString);
content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
return httpClient.PutAsync(url, content);
}
}
推荐阅读
- c++ - std::common_type 的特化——误解、错误、两者兼而有之,还是两者都没有?
- r - 根据另一列中的条件过滤非 NA 值,保留所有其他记录
- python - 从另一个线程中了解一个 Python 线程的执行点(模块和行号)
- php - 为什么我不能在 Codeigniter 中使用 Chart.js 创建月度销售报告
- optimization - 查询优化建议
- powershell - 如何将带有附加道具的 PSCustomObject 转换为自定义类
- activemq-artemis - 在 Artemis 共置 HA 配置中从从属故障恢复到主控不起作用
- mysql - 如何从终端访问和修改 phpmyadmin 数据库?
- python - 用于简单显示的最佳 Python UI 框架(无直接交互)
- ruby-on-rails - Rails Webpacker - 如何从视图 [HTML 文件] 访问 webpack 条目文件中定义的对象