我正在尝试将一些JSON信息发送到服务器。我向主体添加了一个预序列化的字符串,并将一些属性放在标题中。
RestClient client = new RestClient(requURI);
RestRequest request = new RestRequest(reqPath, method);
request.RequestFormat = DataFormat.Json;
request.JsonSerializer.ContentType = "application/json; charset=utf-8";
request.AddHeader("Date", getIsoStringFromDate(DateTime.Now));
request.AddParameter("application/json; charset=utf-8", JSonString, ParameterType.RequestBody);
除了没有出现的日期标题外,一切都很完美。当我将行更改为
时 request.AddHeader("Datexxx", getIsoStringFromDate(DateTime.Now));
它将显示在标题中(参见网络跟踪)
System.Net Information: 0 : [5620] ConnectStream#61150033 - Header
{
Datexxx: 2015-03-16 16:19:39
Accept: application/json, application/xml, text/json, text/x-json, text/javascript, text/xml
User-Agent: RestSharp 104.1.0.0
Content-Type: application/json; charset=utf-8
Host: localhost:8080
Content-Length: 620
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
}
我认为“日期”是Rest Sharp的预定义或预填充值。
我添加了一个带有
的dateFormat定义 request.DateFormat = "MMMM dd, yyyy";
但仍然没有显示日期标题属性。在添加之前还尝试清除所有参数,但也没有帮助。
有一个关于这个的github错误但它已经超过2年了......也许我只是缺少类似“includeDateInHeader”开关的东西。
我使用.Net 3.5和Rest Sharp 104.1.0.0。或105.1.0.0。 Thx提前!
答案 0 :(得分:0)
似乎某些属性(例如内容类型或日期)无法作为参数添加,但会在内部添加。要改变“内容类型”的值,我必须更改序列化设置(尽管我没有使用它,因为我之前在序列化中添加了一个json!)
RestClient client = new RestClient(requURI);
RestRequest request = new RestRequest(reqPath, method);
request.RequestFormat = DataFormat.Json;
request.Parameters.Clear();
request.AddHeader("Date", getIsoStringFromDate(DateTime.Now));
request.JsonSerializer.ContentType = "application/json; charset=utf-8";
一旦我这样做,标题出现了预期:
System.Net Information: 0 : [5620] ConnectStream#61150033 - Header
{
Accept: application/json, application/xml, text/json, text/x-json, text/javascript, text/xml
User-Agent: RestSharp 104.1.0.0
Content-Type: application/json; charset=utf-8
...
}