关于 无法发送具有此谓词类型的内容正文 的问题

b565a171681c23adcc1b
2018-08-20 17:34 2.4k 0

今天第一次使用 IM 服务端 C# sdk,遇到这个问题折腾一整天,在社区里面看到了一个类似的问题,但是那里的讨论对我没有什么帮助,在这里把遇到的问题重新分析一下。

首先我使用的 .net framework 版本是 4.5.2。出现“无法发送具有此谓词类型类型的内容正文”,是因为 HttpRequestMessage 这个类的使用中,如果 http 方法是 get,那么是不能设置 content 的。

如果像 C# SDK 中那样设置了 content,就会报告上述错误。所以有些用户把 http 方法改成 post,就不会报这个错了,但是会报告 400,因为极光限制了接口只能是 get。这个问题还比较好解决,自己写个代码在极光的源码基础上注释掉

 Content = new StringContent(string.Empty, Encoding.UTF8, "application/json") 

这一行就可以了。

最让人蛋疼的是 report api。这里面的方法几乎都是 get 类型的,但是极光后台肯定是限制了这些方法请求的 header 中需要有 content-type:application/json. 不然就会报告 Unsupported Media Type 错误(已经用 postman测试过这个问题,很奇怪,为啥 get 方法要在 header 中限制 content-type 呢)。

前面说了,在使用 httpclient 时,如果定义了 HttpRequestMessage 的 http 方法是 get,就不能设置 content,那么就无法在 header 中设置 content-type:application/json(目前我还没找到可以通过 HttpClient 直接在 header 中设置 content-type 的方法)。这样的结果是,C# sdk 中那些 report 的方法都是没法用的。

2个回答

热门排序