在 asp.net MVC 中设置整数标头值
Posted
技术标签:
【中文标题】在 asp.net MVC 中设置整数标头值【英文标题】:Set Integer header value in asp.net MVC 【发布时间】:2021-07-25 00:20:09 【问题描述】:我想为 terminalId 设置一个 Int Header 值。
目前 HttpClient 标头仅采用
此 Web 服务接受 Int 作为 terminalId。
以下代码:
using (var client = new HttpClient())
client.BaseAddress = new Uri("http://localhost:8678");
var postview = new CitizenResult
cpartyUsername = "abc",
cpartyPassword = "123",
;
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Add("token", "d448f575db31a44e32e0a17f24bc947cdd4edb4a7db8729734c81b9e139286af36dd9c5e42793d494e0f7bd45b25e5f3b77472949f38bcdb3dfa2b8d1ef376848ec6ce65b9a7d7be343c5c1b59089082");
client.DefaultRequestHeaders.Add("clientIPAddress", "178.173.147.4");
client.DefaultRequestHeaders.Add("clientAgentInfo", "192.168.0.227");
client.DefaultRequestHeaders.Add("terminalId", 123);
int a = 190766;
var postTask = client.PostAsJsonAsync<CitizenResult>("http://test", postview);
postTask.Wait();
var result = postTask.Result;
if (result.IsSuccessStatusCode)
var x = result.Content.ReadAsAsync<SalamtResultViewModel>();
ViewBag.x = x;
else
var x = result.Content.ReadAsAsync<badRequestResult>();
ViewBag.x = x;
【问题讨论】:
在放入header之前先将int转换为string,然后从header中读取后转换回int。 【参考方案1】:当您添加整数时,只需调用 .toString() 方法。
client.DefaultRequestHeaders.Add("terminalId", 123.toString());
或
client.DefaultRequestHeaders.Add("terminalId", a.toString());
这是因为可以将标头视为只是一个 JSON 对象,其中所有内容都存储在引号中,如下所示:
"key": "value"
所以您的条目将像这样存储
"terminalId": "123"
JSON 可以保存如下信息:
"terminalId": 123
但没有可用的重载。
【讨论】:
感谢您的关注,但网络服务接受 Int 作为 terminalId。 抱歉,您没有传递到 Web 服务。您正在传递给 System.Net.Http.Headers.HttpRequestHeaders 对象的属性,该属性必须有一个字符串。我认为您需要查找该名称空间以及强制转换是什么。我想你已经从某个地方复制了这段代码?您正在构建一个 JSON 请求,它不需要整数。你试图做的事情是不可能的。 TL;DR 传入“123”而不是 123以上是关于在 asp.net MVC 中设置整数标头值的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 asp.net mvc 中的标记在 Select2 输入中设置默认值
在 asp .net CORE / MVC 6 应用程序中设置 Swagger 时出现 500 错误
在 asp.net mvc 中设置用户对每个应用程序的访问权限