错误406不可接受的JSON

时间:2015-01-13 20:59:57

标签: c# json api artifactory

http://www.jfrog.com/confluence/display/RTF/Artifactory+REST+API#ArtifactoryRESTAPI-CreateorReplaceRepositoryConfiguration

我正在使用Create或Replace Repository Configuration调用。但是我得到了406错误:不可接受。其他PUT调用正在运行,但不返回JSON。我相信JSON是错误的来源,但无法解决或证明这一点。

我添加了以下代码

RestClient Client = new RestClient(uriString);
RestRequest Request = new RestRequest(requestType);

Request.AddHeader("Authorization", "Basic " + credentials);
Request.AddHeader("Accept", "application/json");

我见过线程,添加标头以接受JSON可以解决错误,但这对我没用。

4 个答案:

答案 0 :(得分:7)

A 406 HTTP status表示如果Web服务器检测到它想要返回的数据对客户端不可接受,则会返回包含406错误代码的标头。 客户端可以使用接受标头定义它将从Web服务器接收的数据的特征 在这种情况下,您声明要接受application/json

Request.AddHeader("Accept", "application/json");

但是,您正在调用的REST API方法正在返回text/plain 您应该将代码更改为接受text / plain:

Request.AddHeader("Accept", "text/plain");

答案 1 :(得分:1)

希望为像我这样的未来用户添加此功能。我遇到了同样的问题并尝试了Postman的请求,发现Content-Type是" application / hal + json"我正在尝试使用application / json而没有运气。

因此,在邮递员中进行测试,我能够确定服务器所需的内容。

client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/hal+json"));

答案 2 :(得分:1)

当尝试在另一个站点上获取JSON时,我遇到了相同的406错误:不可接受。就我而言,在浏览器地址字段中键入url时,我可以看到正确的JSON。但是通过我的C#代码从相同的URL下载它会产生406错误。 本主题中的任何答案都不能直接解决我的问题。但是至少他们向我指出,关键是HTTP标头。

因此我在该页面上进行了搜索: https://www.whatismybrowser.com/detect/what-http-headers-is-my-browser-sending 并将所有浏览器标头添加到我的代码中,瞧!它开始工作。 就我而言,足以在用户代理标头中填充一些数据。

答案 3 :(得分:0)

首先,Accept标题表明客户端准备回来的内容,而不是客户端发送的内容。 说明客户端发送内容的标头是Content-Type

此外,此方法不接受application/json。正如文档中明确指出的那样,它接受以下其中一项:

  • application/vnd.org.jfrog.artifactory.repositories.LocalRepositoryConfiguration+json
  • application/vnd.org.jfrog.artifactory.repositories.RemoteRepositoryConfiguration+json
  • application/vnd.org.jfrog.artifactory.repositories.VirtualRepositoryConfiguration+json