微信小程序网络请求的封装与填坑之路

2024-05-04 15:32

本文主要是介绍微信小程序网络请求的封装与填坑之路,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

以前写过一篇关于微信小程序上拉加载,上拉刷新的文章,今天写的是关于小程序网络请求的封装。
在这里首先声明一个小程序文档的bug,导致大伙们在请求的时候,服务器收到不到参数的问题

示例代码:wx.request({url: 'test.php', //仅为示例,并非真实的接口地址data: {x: '' ,y: ''},header: {'Content-Type': 'application/json'},success: function(res) {console.log(res.data)}
})

其中header 中的Content-Type,应该用小写content-type才能让服务器收到参数。让我折腾的好久,改了服务器仍然不行,原来是这个问题。参数在request payload中,服务器不能收到,使用如下转换之后

function json2Form(json) {  var str = [];  for(var p in json){  str.push(encodeURIComponent(p) + "=" + encodeURIComponent(json[p]));  }  return str.join("&");  
}  

这里写图片描述

最终还是认为是content-type的问题。最后改小写就ok,觉得微信这么牛逼的团队,犯了一个很低级 的错误,把我开发者折腾的爬了。不说,上代码吧。

1 、Http请求的类

import util from 'util.js';
/*** url 请求地址* success 成功的回调* fail 失败的回调*/
function _get( url, success, fail ) {console.log( "------start---_get----" );wx.request( {url: url,header: {// 'Content-Type': 'application/json'},success: function( res ) {success( res );},fail: function( res ) {fail( res );}});console.log( "----end-----_get----" );
}/*** url 请求地址* success 成功的回调* fail 失败的回调*/
function _post_from(url,data, success, fail ) {console.log( "----_post--start-------" );wx.request( {url: url,header: {'content-type': 'application/x-www-form-urlencoded',},method:'POST',data:{data: data},success: function( res ) {success( res );},fail: function( res ) {fail( res );}});console.log( "----end-----_get----" );
}/*** url 请求地址* success 成功的回调* fail 失败的回调*/
function _post_json(url,data, success, fail ) {console.log( "----_post--start-------" );wx.request( {url: url,header: {'content-type': 'application/json',},method:'POST',data:data,success: function( res ) {success( res );},fail: function( res ) {fail( res );}});console.log( "----end----_post-----" );
}
module.exports = {_get: _get,_post:_post,_post_json:_post_json
}

2、测试用例

2.1 get请求

   //GET方式let map = new Map();map.set( 'receiveId', '0010000022464' );let d = json_util.mapToJson( util.tokenAndKo( map ) );console.log( d );var url1 = api.getBaseUrl() + 'SearchTaskByReceiveId?data='+d;network_util._get( url1,d,function( res ) {console.log( res );that.setData({taskEntrys:res.data.taskEntrys});}, function( res ) {console.log( res );});

2.2 POST请求

//Post方式let map = new Map();map.set( 'receiveId', '0010000022464' );let d = json_util.mapToJson( util.tokenAndKo( map ) );console.log( d );var url1 = api.getBaseUrl() + 'SearchTaskByReceiveId';network_util._post( url1,d,function( res ) {console.log( res );that.setData({taskEntrys:res.data.taskEntrys});}, function( res ) {console.log( res );});

效果这里写图片描述

这里写图片描述

这篇关于微信小程序网络请求的封装与填坑之路的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/959527

相关文章

MESH网络全自动全屋覆盖! 小米全屋路由器BE3600 Pro套装评测

《MESH网络全自动全屋覆盖!小米全屋路由器BE3600Pro套装评测》小米全屋路由BE3600Pro网线版,一套“全2.5G口+Mesh配置”的组合,这套路由器到底是神器还是智商税?我们今天就... 目录一、前言:更好用的Wi-Fi 7路由器 不只是更快二php、外观:致敬经典回归初心 复刻初代小米路由器

Django调用外部Python程序的完整项目实战

《Django调用外部Python程序的完整项目实战》Django是一个强大的PythonWeb框架,它的设计理念简洁优雅,:本文主要介绍Django调用外部Python程序的完整项目实战,文中通... 目录一、为什么 Django 需要调用外部 python 程序二、三种常见的调用方式方式 1:直接 im

Springboot请求和响应相关注解及使用场景分析

《Springboot请求和响应相关注解及使用场景分析》本文介绍了SpringBoot中用于处理HTTP请求和构建HTTP响应的常用注解,包括@RequestMapping、@RequestParam... 目录1. 请求处理注解@RequestMapping@GetMapping, @PostMappin

Android使用java实现网络连通性检查详解

《Android使用java实现网络连通性检查详解》这篇文章主要为大家详细介绍了Android使用java实现网络连通性检查的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录NetCheck.Java(可直接拷贝)使用示例(Activity/Fragment 内)权限要求

Mysql 驱动程序的程序小结

《Mysql驱动程序的程序小结》MySQL驱动程序是连接应用程序与MySQL数据库的重要组件,根据不同的编程语言和应用场景,MySQL提供了多种驱动程序,下面就来详细的了解一下驱动程序,感兴趣的可以... 目录一、mysql 驱动程序的概念二、常见的 MySQL 驱动程序1. MySQL Connector

java程序远程debug原理与配置全过程

《java程序远程debug原理与配置全过程》文章介绍了Java远程调试的JPDA体系,包含JVMTI监控JVM、JDWP传输调试命令、JDI提供调试接口,通过-Xdebug、-Xrunjdwp参数配... 目录背景组成模块间联系IBM对三个模块的详细介绍编程使用总结背景日常工作中,每个程序员都会遇到bu

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

Python实现简单封装网络请求的示例详解

《Python实现简单封装网络请求的示例详解》这篇文章主要为大家详细介绍了Python实现简单封装网络请求的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录安装依赖核心功能说明1. 类与方法概览2.NetHelper类初始化参数3.ApiResponse类属性与方法使用实

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

SpringBoot 获取请求参数的常用注解及用法

《SpringBoot获取请求参数的常用注解及用法》SpringBoot通过@RequestParam、@PathVariable等注解支持从HTTP请求中获取参数,涵盖查询、路径、请求体、头、C... 目录SpringBoot 提供了多种注解来方便地从 HTTP 请求中获取参数以下是主要的注解及其用法:1