开发者社区> 问答> 正文

安卓Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.String javax.xml.bind.DatatypeConverterInterface.printBase64Binary(byte[])' on a null object reference

PubResponse response = client.getAcsResponse(request);实例化这个的时候

try

    {
    String accessKey = "*";
    String accessSecret = "*";
    DefaultProfile.addEndpoint( "cn-shanghai", "Iot", "iot.cn-shanghai.aliyuncs.com");
    IClientProfile profile = DefaultProfile.getProfile("cn-shanghai", accessKey, accessSecret);
    DefaultAcsClient client = new DefaultAcsClient(profile); //初始化SDK客户端
    PubRequest request = new PubRequest();
    request.setProductKey("a17oCIdyJso");
        request.setMessageContent(android.util.Base64.encodeToString("hello world".getBytes(), android.util.Base64.DEFAULT));
    request.setTopicFullName("/a17oCIdyJso/emw3290/get");
    request.setQos(0); //目前支持QoS0和QoS1

        PubResponse response = client.getAcsResponse(request);
        System.out.println(response.getSuccess());
        System.out.println(response.getErrorMessage());
    }
    catch (ServerException e)
    {
        e.printStackTrace();
    }
    catch (ClientException e)
    {
        e.printStackTrace();
    }

大佬说了是不是空的问题,我再加一个吧
__15524652903050__15524652976364

__15524652976364

展开
收起
萌新怕弯路 2019-03-11 18:12:55 7997 0
4 条回答
写回答
取消 提交回答
  • 解决了吗? 我用jwt 跟你出了一样的问题, 打断点看出 private static DatatypeConverterInterface theConverter = new DatatypeConverterImpl()

    theConverter 对象是空的 导致的NPE

    2020-04-30 14:11:42
    赞同 展开评论 打赏
  • 你在static函数中调用theConverter,theConverter是没有实例化的。这么做肯定是会有问题的。
    把printBase64Binary函数改成非static的,然后在调用。

    2019-07-17 23:30:37
    赞同 展开评论 打赏
  • 空指针,DatatypeConverterInterface的实例theConverter为空。

    2019-07-17 23:30:37
    赞同 展开评论 打赏
  • 空指针,建议debug看一下getAcsResponse这个方法中调用printBase64Binary方法时的参数是否为空,需要做参数的非空校验。

    2019-07-17 23:30:37
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载