gpt4 book ai didi

c# - RestSharp 接受 header 更改

转载 作者:数据小太阳 更新时间:2023-10-29 06:58:49 25 4
gpt4 key购买 nike

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

来进行版本控制

通过控制台测试命令完美无缺

curl -H Accept=application/vnd.twitter-v1+json /statuses/public_timeline

但是当我尝试为 RestRequest 设置 header 时,我在服务器上收到 error 404

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

如何为 Accept header 设置自定义值?

最佳答案

您可以设置自定义 Accept带有 AddHeader 的 header 方法...

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,这应该可以正常工作。


如果您想使用通用 Execute<T>方法,它为你自动反序列化,你会遇到问题......

来自RestSharp documentation about deserialization :

RestSharp includes deserializers to process XML and JSON. Upon receiving a response, RestClient chooses the correct deserializer to use based on the Content Type returned by the server. The defaults can be overridden (see Customization). The built-in content types supported are:

  • application/json – JsonDeserializer
  • application/xml – XmlDeserializer
  • text/json – JsonDeserializer
  • text/xml – XmlDeserializer
  • * – XmlDeserializer (all other content types not specified)

这是说,默认情况下,如果响应的内容类型不是列出的内容类型之一,RestSharp 将尝试对您的数据使用 XmlDeserializer。这是可定制的,但需要额外的工作。

关于c# - RestSharp 接受 header 更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16629928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com