Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.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接受标题更改_C#_Ruby_Http_Restsharp_Grape - Fatal编程技术网

C# RestSharp接受标题更改

C# RestSharp接受标题更改,c#,ruby,http,restsharp,grape,C#,Ruby,Http,Restsharp,Grape,我使用RestSharp在客户端进行开发。我还在服务器端的自定义API中使用Ruby Grape gem。Grape gem可以通过将Accept HTTP头f.e设置为application/vnd.twitter-v1+json 通过控制台的测试命令工作正常 curl -H Accept=application/vnd.twitter-v1+json /statuses/public_timeline 但是,当我试图为RestRequest设置标头时,服务器上出现了错误404 我不知道为什

我使用RestSharp在客户端进行开发。我还在服务器端的自定义API中使用Ruby Grape gem。Grape gem可以通过将Accept HTTP头f.e设置为
application/vnd.twitter-v1+json

通过控制台的测试命令工作正常

curl -H Accept=application/vnd.twitter-v1+json /statuses/public_timeline
但是,当我试图为RestRequest设置标头时,服务器上出现了
错误404

我不知道为什么会这样。我发现了服务器返回的另一个问题
406 error
——但在我的例子中是404


如何为Accept标头设置自定义值?

您可以使用
AddHeader
方法设置自定义
Accept
标头

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;
如果您愿意自己反序列化JSON,那么这应该可以很好地工作


如果您想使用generic
Execute
方法,该方法为您执行自动反序列化,您将遇到问题

从:

RestSharp包括处理XML和JSON的反序列化程序。收到响应后,RestClient根据服务器返回的内容类型选择要使用的正确反序列化程序。可以覆盖默认值(请参见自定义)。支持的内置内容类型包括:

  • application/json–JsonDeserializer
  • application/xml–XmlDeserializer
  • text/json–JsonDeserializer
  • text/xml–XmlDeserializer
  • *–XmlDeserializer(未指定所有其他内容类型)
这意味着,默认情况下,如果响应的内容类型不是列出的内容类型之一,RestSharp将尝试对数据使用XmlDeserializer。这是可定制的,但需要额外的工作