JAVA SDK ApacheHttpClient 的 BUG

javasdk
jmessage
标签: #<Tag:0x00007f2147dc1238> #<Tag:0x00007f2147dc10f8>

#1

cn.jiguang.common.connection.ApacheHttpClient中的


content参数并没有放到httpDelete中发送出去,所以调用deleteBlacklist等API时会报错

然而httpclient的HttpDelete类并没有setEntity

可以参考下面这个链接解决HttpDelete没有setEntity这个问题


#2

你这是用的哪一个 SDK,是极光官方 SDK 吗?SDK 版本多少?

看起来你是在调用 移除黑名单相关的 API?相关示例
https://github.com/jpush/jmessage-api-java-client/blob/master/example/main/java/cn/jmessage/api/examples/UserExample.java#L210

调用后具体是报了什么错呢?


#3

我用的是ApacheHttpClient,不是默认的NativeHttpClient

版本是1.1.3,报错是

Error 400

HTTP ERROR: 400

Problem accessing /v1/users/fantuanimadmintest/blacklist. Reason:

    Bad Request

Powered by Jetty://

#4

400 应该有具体的对应的极光错误码,catch 下具体的错误码
https://docs.jiguang.cn/jmessage/client/im_errorcode_server/


#5

是SDK里面的ApacheHttpClient有bug,解除黑名单的接口需要传用户的id过去,但是代码里面并没有传过去,我的截图就是SDK里面的代码


#6

这个我转给 SDK 研发那边看一下。


#7
Delete /v1/users/{username}/blacklist

这个接口需要传的参数是

[
 "test1",
 "test2"
 ]

cn.jiguang.common.connection.ApacheHttpClient#sendDelete(java.lang.String, java.lang.String)这个方法没有将参数加到http请求中去


#8

我提给研发那边,你可以先尝试升级到最新版本


#9

最新版本里面也是这样的


#11

问题已处理,请升级common到最新版


#12

:grinning:
好的 谢谢


#13

请问升级后解决了吗


#14

解决了 谢谢