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


(子玄) #1

今天第一次使用 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 的方法都是没法用的。


无法发送具有此谓词类型的内容正文
C# SDK 获取应用下聊天室列表和获取用户聊天室列表报错
#2

请稍等,这个问题已提交给研发进行处理。


#3

该问题已修复,report -API 的 GET 请求,已经去掉了 Content-Type 的限制

可测试一下。


(子玄) #4

已经测试,问题解决了,谢谢。


(farmer9527) #5

现在可以了么?为什么我下载的最新版本还是报这个错误!!!!!


#6

image

报什么错误?如果是“无法发送具有此谓词类型类型的内容正文”,先根据楼主的这个做法去处理