weex的网络请求:stream的fetch

匿名 (未验证) 提交于 2019-12-03 00:26:01

weex用于网络请求的公共对象是stream。stream有个成员函数fetch(),其作用类似ajax。用法如下:

var stream = weex.requireModule('stream');

设请求地址是:http://127.0.0.1:8080:MyTest/getTest

参数是:

{
parm0: 0,
parm1: 'abc'
}

var GET_URL = 'http://127.0.0.1:8080:MyTest/getTest?parm0=0&parm1=abc';
stream.fetch({
method: 'GET',
url: GET_URL,
type:'jsonp'
}, function(ret) {
console.log(ret);
if(!ret.ok) {
console.log('get request failed');
else{
console.log('get:'+ret);

},
function(response) {
console.log(response);
});

var POST_URL = 'http://127.0.0.1:8080:MyTest/getTest';
var postBody = 'parm0=0&parm1=abc';
stream.fetch({
method: 'POST',
url: POST_URL,
body: postBody,
type:'jsonp'
}, function(ret) {
console.log(ret);
if(!ret.ok){
console.log('post request failed');
else{
console.log('post:'+ret);

},
function(response) {
console.log(response);
});

注意:

get不支持body属性;post将参数放在body中。

必须是一个字符串对象,不接受JSON对象,也不接受JSON.stringify()后的JSON对象。该字符串对象的格式与get的参数格式相同,即:'parm0=0&parm1=abc'


有关于跨域访问:

当调用fetch进行请求时,可能会遇到跨域访问的问题。将type由json改为jsonp并不会解决该问题。

该问题主要依赖服务端来解决。若服务端是java,则在controller前加注解:

@CrossOrigin(origins = "*", maxAge =3600)

即可解决。但相应地,安全性会降低。

跨域访问仅会发生在web端。当用安卓调用接口时,相同的代码,不会出现跨域访问问题。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!