Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在c中通过HTTP POST请求发送动态对象#_C#_Http_Post_Webapi - Fatal编程技术网

C# 在c中通过HTTP POST请求发送动态对象#

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

我试图通过HTTP和POst请求发送一个动态对象,但当我收到该对象时,它是空的

我不能使用JObject,因为我有一个“虚拟”api,它不接受JObject

我试图发送类型对象和动态。它们都不起作用。有人能帮我吗

以下是我的发帖请求:

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
    });