C# 在c中通过HTTP POST请求发送动态对象#
我试图通过HTTP和POst请求发送一个动态对象,但当我收到该对象时,它是空的 我不能使用JObject,因为我有一个“虚拟”api,它不接受JObject 我试图发送类型对象和动态。它们都不起作用。有人能帮我吗 以下是我的发帖请求:C# 在c中通过HTTP POST请求发送动态对象#,c#,http,post,webapi,C#,Http,Post,Webapi,我试图通过HTTP和POst请求发送一个动态对象,但当我收到该对象时,它是空的 我不能使用JObject,因为我有一个“虚拟”api,它不接受JObject 我试图发送类型对象和动态。它们都不起作用。有人能帮我吗 以下是我的发帖请求: public static void Post(string uri, object parameter, string serviceName) { StringBuilder url = new StringBuilde
public static void Post(string uri, object parameter, string serviceName)
{
StringBuilder url = new StringBuilder();
url.Append(uri);
var client = GetClient(url.ToString(), 300, "application/json");
var urlParameters = GetUrlParameters(new List<KeyValuePair<string, object>>() { });
var response = client.PostAsync(
urlParameters,
new StringContent(
JsonConvert.SerializeObject(parameter).ToString(),
Encoding.UTF8,
"application/json")
).Result;
if (response.StatusCode != System.Net.HttpStatusCode.OK)
throw new Exception($"{serviceName}: {response.StatusCode}");
}
类中实现的方法(这是我获取数据的地方):
你能稍微调整一下你的帖子来解决这个问题吗?像下面这样的?(未编译)
var rawJson=wait client.PostAsync(
URL参数,
新内容(
JsonConvert.SerializeObject(参数).ToString(),
Encoding.UTF8,
“应用程序/json”)
).Content.ReadAsStringAsync();
var mappedObj=JsonConvert.DeserializeObject(rawJson,
新JsonSerializerSettings
{
Error=委托(对象发送方,Newtonsoft.Json.Serialization.ErrorEventArgs args args)
{
//将其转换为您的记录器
LogHelper.Instance.Warning(2000,string.Format(“失败的对象映射:{0}\n{1}”),
args.ErrorContext.Error,rawJson);
args.ErrorContext.Handled=true;
},
//设置区域性以缓解与日期/数字相关的映射问题
// https://stackoverflow.com/a/34529198
Culture=CultureInfo.InvariantCulture
});
[OperationContract]
[WebInvoke(Method = "POST",
ResponseFormat = WebMessageFormat.Json,
RequestFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Bare,
UriTemplate = "Teste")]
void Teste(object requestData);
public void Teste(object requestData)
{
var teste = requestData;
var t1 = JsonConvert.SerializeObject(requestData); // this returns {}; (empty)
}
var rawJson = await client.PostAsync(
urlParameters,
new StringContent(
JsonConvert.SerializeObject(parameter).ToString(),
Encoding.UTF8,
"application/json")
).Content.ReadAsStringAsync();
var mappedObj = JsonConvert.DeserializeObject<T>(rawJson,
new JsonSerializerSettings
{
Error = delegate (object sender, Newtonsoft.Json.Serialization.ErrorEventArgs args)
{
// convert this to your logger
LogHelper.Instance.Warning(2000, string.Format("Failed object mapping: {0}\n{1}",
args.ErrorContext.Error, rawJson));
args.ErrorContext.Handled = true;
},
// set culture to mitigate mapping issues related to dates/numbers
// https://stackoverflow.com/a/34529198
Culture = CultureInfo.InvariantCulture
});