我是把H5+作为插件使用的,只引入了最基本的配置。
在js中调用plus.net.XMLHttpRequest是,android报错了,错误信息如下:
05-21 20:00:59.720: W/System.err(27003): java.lang.NullPointerException
05-21 20:00:59.720: W/System.err(27003): at io.dcloud.net.NetWork.run(NetWork.java:241)
05-21 20:00:59.720: W/System.err(27003): at java.lang.Thread.run(Thread.java:841)
js代码是
var xhr = new plus.net.XMLHttpRequest();
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xhr.onreadystatechange = this.onReadStatechange(xhr);
if ((typeof authorizationHeader != 'undefined') && (authorizationHeader != '')) {
xhr.setRequestHeader(DigestAuthentication.AUTHORIZATION_HEADER, authorizationHeader);
$.each(headers, function(index, value) {
xhr.setRequestHeader(value.headerName, value.headerValue);
});
}
xhr.open(DigestAuthentication.HTTP_METHOD, uri);
xhr.send(body);
是否因为有什么东西没有配置?
xhr.jar包已经加入了。
4 个回复
suney (作者)
有人帮忙回答一下吗?
suney (作者)
没人帮忙回答,自己基本上折腾清楚了,估计plus.net.XMLHttpRequest实现的不是很完整,这我访问的url是需要digest认证的,我用js实现了认证的流程,使用普通的XMLHttpRequest是正常的,但plus.net.XMLHttpRequest处理会出错。
而且发现用plus.net.XMLHttpRequest时,使用chrome debug会有问题,后面的几个状态断点不生效了。
DCloud_Android_ST
DigestAuthentication.HTTP_METHOD 是什么?
void open( method, url, username, password );
method: ( DOMString ) 必选 请求URL的HTTP协议方法
值可以为"GET"、"POST"。
目前支持持GET 和 POST 如果你填写的是其他模式,就会失败
suney (作者)
感谢回答,DigestAuthentication.HTTP_METHOD是另外定义的,取值就是GET和POST。
我的问题在于犯了一个低级错误
xhr.onreadystatechange = this.onReadStatechange(xhr);
应该把后面的(xhr)去掉。
但那个NullPointerException的异常误导了我。好像NullPointerException的异常对结果没有影响。
2015-05-26 08:39
whsczl
var xhr = new plus.net.XMLHttpRequest();
xhr.addEventListener('error', function(e) {
alert(e)
});
xhr.setRequestHeader("Accept","/");
老是报 406,怎么解决?
加载 本地txt文件是可以的,图片就不行。