无论何种平台,网络数据的获取都是十分重要的,最近学习weex,不可避免的要学习weex的数据请求方法了。网址

个人感觉,weex stream相较于其他平台,还算比较简单了,但是由于文档以及官方代码中的错误,导致网络请求很难获取到自己想要的数据,再次简单记录一下遇到的坑。


一、获取modal,stream,config对象

var modal = weex.requireModule('modal');
var stream = weex.requireModule('stream');
var config = require('./config.js')

二、get请求

get请求还好,按照官方的demo写就没什么问题了。

clickTypeGet:function(){
var me = this; stream.fetch({
method: 'GET',
type: 'json',
url: 'https://api.github.com/repos/alibaba/weex'
}, function(ret) {
if(!ret.ok){
me.getResult = "request failed";
modal.toast({
'message': "失败",
'duration': 2.0
})
}else{
console.log('get---------:'+JSON.stringify(ret));
me.getResult = JSON.stringify(ret); modal.toast({
message: JSON.stringify(ret),
duration: 2.0
})
}
})
},

三、post请求

clickTypePost:function(){
var me = this;
stream.fetch({
method:"POST",
type:'json',
url:'http://www.kuaidi100.com/query',
headers:{'Content-Type':'application/x-www-form-urlencoded'},
// body:'type=shentong&postid=3333557693903',
body:config.toParams(
{
type:'shentong',
postid:'',
})
//
// body:JSON.stringify({
//
// type:'shentong',
// postid:'3333557693903',
// }), }, function(ret) {
if(!ret.ok){
me.getResult = "request failed";
modal.toast({
'message': "失败",
'duration': 2.0
})
}else{
console.log('get---------:'+JSON.stringify(ret.data));
me.getResult = JSON.stringify(ret); modal.toast({
message: JSON.stringify(ret.data),
duration: 2.0
})
}
},function(progress) {
// JSON.stringify(progress.length);
})
}
这里的body不能像官方一样写,官方是这么写的:
事实证明,这么写,始终获取不到数据,也会提示数据请求成功,但是想要的数据却始终没有
                    body:JSON.stringify({
type:'shentong',
postid:'3333557693903',
}),

经过几番乱试,终于发现,只是因为body写法不对,造成的post请求获取不到数据,我们是这么写的

body:config.toParams(
{
type:'shentong',
postid:'',
})

其中的toParams是自己写的一个工具方法:

toParams(obj) {
var param = ""
for(const name in obj) {
if(typeof obj[name] != 'function') {
param += "&" + name + "=" + encodeURI(obj[name])
}
}
return param.substring()
},

小结:其实body字符串的格式是‘param1=p1&param2=p2’。


注意:fetch请求在电脑端浏览器会被提醒跨域,请求被拦截,直接用手机测试

最新文章

  1. Servlet学习:实现分页效果的方法
  2. Spring MVC注解的一些案列
  3. 第一次写这么长的js
  4. APP图标和启动页
  5. [C++][重载]
  6. ZOJ 1007 Numerical Summation of a Series
  7. JavaScript异步获取数据解析
  8. jsp HTTP Status 405 - HTTP method GET is not supported by this URL
  9. GPS数据处理 - 字符串函数的灵活应用
  10. atmega16功耗实测
  11. Node.js基础学习三之登录功能
  12. 关键字(5):cursor游标:(循环操作批量数据)
  13. 20165314 2016-2017-2 《Java程序设计》第8周学习总结
  14. Kattis之旅——Prime Path
  15. 20155205 2016-2017-2《Java程序设计》课程总结
  16. 两个不能同时共存的条件orWhere查询
  17. CF815C Karen and Supermarket
  18. 20145302张薇 《网络对抗技术》 web安全基础实践
  19. [转载红鱼儿]delphi 实现微信开发(1)
  20. [CQOI2015]任务查询系统 主席树

热门文章

  1. Windows核心编程:第7章 线程调度、优先级和关联性
  2. 调试 .NET Framework 源代码、.DotNetCore源码
  3. .net 使用HtmlAgilityPack做爬虫
  4. C/C++掌握技能(二)
  5. Swift5 语言参考(八) 模式
  6. jq 复习帖子 常用操作
  7. 使用命令行工具npm新创建一个vue项目
  8. opencv2.4.13.7的resize函数使用(c++)
  9. django views视图函数返回值 return redirect httpresponse总结
  10. (转)explain、db2exfmt 命令的使用:文本输出执行计划