C# 将前导字符添加到请求正文中

C# 将前导字符添加到请求正文中,c#,httpclient,C#,Httpclient,我在尝试使用PostAsJsonAsync时遇到了奇怪的问题。 在正文中,我得到了这个带有奇怪的前导和尾随字符的json: 九十九{ “会话参考ID”:“f39dc178-279e-4e3a-bda9-a16829eb0e45” “GameReferenceId”:“netent_es_starburst” “货币代码”:“欧元” “LossLimit”:100 “客户类型”:1 } 0 在API方面,这是不能绑定的,我得到一条错误消息,请求不能有空的正文 发送端的代码如下所示: using(v

我在尝试使用PostAsJsonAsync时遇到了奇怪的问题。 在正文中,我得到了这个带有奇怪的前导和尾随字符的json:

九十九{

“会话参考ID”:“f39dc178-279e-4e3a-bda9-a16829eb0e45”

“GameReferenceId”:“netent_es_starburst”

“货币代码”:“欧元”

“LossLimit”:100

“客户类型”:1

}

0

在API方面,这是不能绑定的,我得到一条错误消息,请求不能有空的正文

发送端的代码如下所示:

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检查了请求/响应,以查看是否存在与编码/内容类型相关的内容?区别是什么?区别是什么?