首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Ramone中使用json-patch时出现不支持的媒体类型错误

在Ramone中使用json-patch时出现不支持的媒体类型错误
EN

Stack Overflow用户
提问于 2014-01-27 16:04:45
回答 1查看 1.2K关注 0票数 1

更新:我下载了Ramone项目,将其添加到我的项目中,然后使用调试器再次运行应用程序。错误如下所示:

公共MediaTypeWriterRegistration GetWriter(类型t,MediaType mediaType) { ...

CodecEntry entry = SelectWriters(t,mediaType).FirstOrDefault();=>此行抛出错误

... }错误发生在CodecManager.cs中。我正在尝试弄清楚为什么它不能识别json-patch媒体类型。会不会是因为编写器没有正确注册?我正在调查这个问题。如果你解决了这个问题,请让我知道。因为你是这个库的作者,所以你会更容易弄清楚这个问题。我必须检查所有的代码文件和方法才能找到这个问题。谢谢!

我很高兴知道Ramone库支持json-patch操作,但当我尝试它时,我得到了以下错误:

415-不支持的媒体类型

这和我使用RestSharp时得到的错误是一样的。我想可能是RestSharp不支持json-patch,所以我决定尝试Ramone lib,但我仍然得到同样的错误。Endpoint没有问题,因为当我使用Postman尝试相同的命令时,它可以工作,但当我在C#中以编程方式尝试它时,它抛出不支持的媒体类型错误。下面是我的代码:

代码语言:javascript
复制
var authenticator = new TokenProvider("gfdsfdsfdsafdsafsadfsdrj5o97jgvegh", "sadfdsafdsafdsfgfdhgfhehrerhgJ");

JsonPatchDocument patch = new JsonPatchDocument<MetaData>();
patch.Add("/Resident2", "Boyle");
//patch.Replace("/Resident", "Boyle");

RSession = RamoneConfiguration.NewSession(new Uri("https://api.box.com"));
RSession.DefaultRequestMediaType = MediaType.ApplicationJson;
RSession.DefaultResponseMediaType = MediaType.ApplicationJson;

Ramone.Request ramonerequest = RSession.Bind("/2.0/files/323433290812/metadata");

ramonerequest.Header("Authorization", "Bearer " + authenticator.GetAccessToken(code).AccessToken);
//var ramoneresponse = ramonerequest.Patch(patch); //results in error: 405 - Method Not Allowed
var ramoneresponse = ramonerequest.Put(patch); //results in error: 415 - Unsupported Media Type

var responsebody = ramoneresponse.Body

终端信息可在此处获得:http://developers.box.com/metadata-api

我在下面的文章中使用了json-patch部分作为参考:

http://elfisk.dk/Ramone/Documentation/Ramone.pdf

顺便说一句,我尝试了Patch()方法(如上面的ref。文章),但这导致了“方法不允许”,所以我使用了Put()方法,该方法似乎可以工作,但由于json-patch操作而出错。

任何关于解决这个问题的帮助、指导和提示都将受到高度赞赏。提前谢谢你。

-Sham

EN

回答 1

Stack Overflow用户

发布于 2014-01-28 08:29:04

Box文档说你应该使用PUT (这很有趣)。服务器甚至告诉您它不支持HTTP PATCH方法(不允许使用405方法)-所以必须这样做。

删除“JSON= patch”语句,并使用: ramonerequest.ContentType("application/json-patch+json").Put(...).将补丁文档作为RSession.DefaultRequestMediaType-MediaType.ApplicationJson发送

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21375691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档