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();
}
大佬说了是不是空的问题,我再加一个吧
解决了吗? 我用jwt 跟你出了一样的问题, 打断点看出 private static DatatypeConverterInterface theConverter = new DatatypeConverterImpl()
theConverter 对象是空的 导致的NPE
你在static函数中调用theConverter,theConverter是没有实例化的。这么做肯定是会有问题的。
把printBase64Binary函数改成非static的,然后在调用。
空指针,建议debug看一下getAcsResponse这个方法中调用printBase64Binary方法时的参数是否为空,需要做参数的非空校验。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。