C# 将前导字符添加到请求正文中
我在尝试使用PostAsJsonAsync时遇到了奇怪的问题。 在正文中,我得到了这个带有奇怪的前导和尾随字符的json: 九十九{ “会话参考ID”:“f39dc178-279e-4e3a-bda9-a16829eb0e45” “GameReferenceId”:“netent_es_starburst” “货币代码”:“欧元” “LossLimit”:100 “客户类型”:1 } 0 在API方面,这是不能绑定的,我得到一条错误消息,请求不能有空的正文 发送端的代码如下所示:C# 将前导字符添加到请求正文中,c#,httpclient,C#,Httpclient,我在尝试使用PostAsJsonAsync时遇到了奇怪的问题。 在正文中,我得到了这个带有奇怪的前导和尾随字符的json: 九十九{ “会话参考ID”:“f39dc178-279e-4e3a-bda9-a16829eb0e45” “GameReferenceId”:“netent_es_starburst” “货币代码”:“欧元” “LossLimit”:100 “客户类型”:1 } 0 在API方面,这是不能绑定的,我得到一条错误消息,请求不能有空的正文 发送端的代码如下所示: using(v
using(var client = new SGSClient()) {
var model = new CashSessionCreateModel()
{
ClientType = ClientType.DesktopBrowser,
CurrencyCode = "EUR",
GameReferenceId = "netent_es_starburst",
LossLimit = 100,
SessionReferenceId = "f39dc178-279e-4e3a-bda9-a16829eb0e45"
};
HttpResponseMessage response = client.PostAsJsonAsync(apiUrl, model).Result;
}
添加HTTPClient配置:
public SGSHttpClient()
{
var appSettingsFilePath = $"Configuration\\appSettings.json";
// Build Configuration
var configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile(appSettingsFilePath, false, true)
.AddEnvironmentVariables()
.Build();
var sgsConfig = configuration.GetSection("SGSClient");
//Base url for SGS service
var _clientConfig = sgsConfig.GetSection("Client").GetChildren();
var baseAddress = _clientConfig.FirstOrDefault(o => o.Key.Equals("BaseAddress"));
BaseAddress = new Uri(baseAddress.Value);
//Adding headers
DefaultRequestHeaders.Accept.Clear();
DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
_dateUTC = DateTime.UtcNow.ToString("u");
DefaultRequestHeaders.Add("DateUtc", _dateUTC);
}
您可以使用此类型的格式发送,可能会有帮助
var postTask = client.PostAsJsonAsync<ClassNameOfObject>(baseUri + "ControllerName/ActionName?UserID=" + UserID, object);
postTask.Wait();
var poststask=client.postsjsonasync(baseUri+“ControllerName/ActionName?UserID=“+UserID,object”);
postTask.Wait();
您可以使用此类型格式发送邮件,可能会很有帮助
var postTask = client.PostAsJsonAsync<ClassNameOfObject>(baseUri + "ControllerName/ActionName?UserID=" + UserID, object);
postTask.Wait();
var poststask=client.postsjsonasync(baseUri+“ControllerName/ActionName?UserID=“+UserID,object”);
postTask.Wait();
“怪异字符”类型的问题通常会指向编码不匹配,但我很难想象是什么导致这些特殊字符出现。目标服务运行在什么上?@TomW.Net Core 2.2您可以包含HttpClient
配置/初始化代码吗?@scheien我已经用额外的代码更新了问题,您是否用Fiddler检查了请求/响应,看看是否有与编码/内容类型相关的内容?“奇怪的字符”一般来说,类型问题往往指向编码不匹配,但我正在努力思考是什么导致这些特定问题出现。什么是运行在@TomW.Net Core 2.2上的目标服务?您可以包含HttpClient
配置/初始化代码吗?@scheien我已经用其他代码更新了这个问题,您是否使用Fiddler检查了请求/响应,以查看是否存在与编码/内容类型相关的内容?区别是什么?区别是什么?