Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.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# RestSharp-post请求问题(操作失败)_C#_Serialization_Restsharp - Fatal编程技术网

C# RestSharp-post请求问题(操作失败)

C# RestSharp-post请求问题(操作失败),c#,serialization,restsharp,C#,Serialization,Restsharp,我对RestSharp的post请求有问题。我有两门课: public class UnitToPost { public bool floating_point { get; set; } public Dictionary<string, TranslationUnitToPost> translations { get; set; } } public class Translat

我对RestSharp的post请求有问题。我有两门课:

public class UnitToPost
        {
            public bool floating_point { get; set; }
            public Dictionary<string, TranslationUnitToPost> translations { get; set; }
        }

        public class TranslationUnitToPost
        {
            public string name { get; set; }
        }
公共类单位成本
{
公共布尔浮点{get;set;}
公共词典翻译{get;set;}
}
公共类TranslationUnitToPost
{
公共字符串名称{get;set;}
}
我想随post请求一起发送:

        client = new RestClient(adresApi);

        client.AddDefaultHeader("Authorization", "Bearer " + key);           

        IRestRequest updateProduct = new RestRequest("units", Method.POST);

        ShoperModel.UnitToPost unitToPost = new ShoperModel.UnitToPost();
        unitToPost.floating_point = true;
        ShoperModel.TranslationUnitToPost transUnit = new ShoperModel.TranslationUnitToPost();
        transUnit.name = "namename";
        unitToPost.translations = new Dictionary<string, ShoperModel.TranslationUnitToPost>();
        unitToPost.translations.Add("pl_PL", transUnit);


        updateProduct.RequestFormat = RestSharp.DataFormat.Json;
        updateProduct.AddBody(unitToPost);

        IRestResponse updateProductResponse = this.client.Execute(updateProduct);
client=新的RestClient(adresApi);
client.AddDefaultHeader(“授权”、“持有人”+密钥);
IRestRequest updateProduct=新的重新请求(“单位”,Method.POST);
ShoperModel.UnitToPost UnitToPost=新ShoperModel.UnitToPost();
unitToPost.floating_point=true;
ShoperModel.TranslationUnitToPost transUnit=新ShoperModel.TranslationUnitToPost();
transUnit.name=“namename”;
unitToPost.translations=新字典();
添加(“pl_pl”,transUnit);
updateProduct.RequestFormat=RestSharp.DataFormat.Json;
updateProduct.AddBody(unitToPost);
IRestResponse updateProductResponse=this.client.Execute(updateProduct);
我总是会出错:

[RestSharp.RestResponse]=“状态代码:InternalServerError, 内容类型:应用程序/json,内容长度:-1“

内容= “{\”错误\“:\”服务器\错误\“,\”错误\描述\“:\”操作 失败\“}”


原因是什么?可能是因为我的类中有字典吗?

我已经运行了您的代码,它发出了一个带有有效JSON正文的请求

POST HTTP/1.1

接受:application/json、application/xml、text/json、text/x-json、text/javascript、text/xml 授权:持票人a

用户代理:RestSharp/105.2.3.0

内容类型:application/json

主持人:

内容长度:84

接受编码:gzip,deflate

连接:保持活力

{“floating_point”:true,“translations”:[{“Key”:“pl_pl”,“Value”:{“name”:“namename”}}]}

看起来问题可能出在接收服务器上。如果您还没有这样做,我建议运行Fiddler()并检查请求/响应

编辑

我刚刚意识到您希望JSON主体是:- {“floating_point”:true,“translations”:{“pl_pl”:{“name”:“namename”}}

我确实发现了一个尖锐的问题,包括:-

这包括一篇文章,其中有人使用ExpandoObject获得了所需的结果

但是,我发现使用JSON.NET序列化并使用以下代码设置正文更容易:-

updateProduct.AddBody(JsonConvert.SerializeObject(unitToPost));