Iho*_*hor 7 c# ruby http ruby-grape restsharp
我正在使用RestSharp在客户端进行开发.我也在服务器端使用Ruby Grape gem作为我的自定义API.Grape gem可以通过设置Accept HTTP header fe来进行版本控制application/vnd.twitter-v1+json
通过控制台测试命令工作完美
curl -H Accept=application/vnd.twitter-v1+json /statuses/public_timeline
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试为RestRequest设置标头时,我正在error 404服务器上.
我不知道为什么会这样.我发现了服务器返回的另一个问题406 error- 但在我的情况下是404.
如何为Accept标头添加自定义值?
您可以Accept使用AddHeader方法设置自定义标头...
var client = new RestClient("http://example.com/api");
var request = new RestRequest("statuses/public_timeline", Method.GET);
request.AddHeader("Accept", "application/vnd.twitter-v1+json");
var response = client.Execute(request);
var json = response.Content;
Run Code Online (Sandbox Code Playgroud)
如果您愿意自己反序列化JSON,这应该可以正常工作.
如果你想使用Execute<T>为你自动反序列化的泛型方法,你会遇到问题......
RestSharp包含用于处理XML和JSON的反序列化器.收到响应后,RestClient会根据服务器返回的内容类型选择正确的反序列化器.可以覆盖默认值(请参阅自定义).支持的内置内容类型包括:
- application/json - JsonDeserializer
- application/xml - XmlDeserializer
- text/json - JsonDeserializer
- text/xml - XmlDeserializer
- * - XmlDeserializer(未指定所有其他内容类型)
这就是说,默认情况下,如果响应的内容类型不是列出的内容类型,RestSharp将尝试在您的数据上使用XmlDeserializer.这可以通过额外的工作进行定制.
| 归档时间: |
|
| 查看次数: |
10221 次 |
| 最近记录: |