微信小程序有四種網絡請求類型,下面只詳細介紹普通HTTPS請求(wx.request)
- 普通HTTPS請求(wx.request)
- 上傳文件(wx.uploadFile)
- 下載文件(wx.downloadFile)
- WebSocket通信(wx.connectSocket)
首先,先確認是否設置了合法域名,或者在開發環境下不校驗合法域名。關於設置合法域名請看→微信小程序 網絡請求之設置合法域名
以下是wx.request的詳細說明,截圖於微信小程序開發文檔
在微信index.js 發起一個普通HTTPS請求,上代碼
wx.request({ url: 'http://localhost:8800/ws_member.asmx/test', data: { strCallUserCode: 'test', strCallPassword: '123' }, method: 'POST', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT header: { 'content-type': 'application/json' },// 設置請求的 header success: function (res) { if (res.statusCode == 200) { } else { console.log("index.js wx.request CheckCallUser statusCode" + res.statusCode); } }, fail: function () { console.log("index.js wx.request CheckCallUser fail"); }, complete: function () { // complete } })
下面是一些需要注意的地方
1)data
1.data 數據說明 最終發送給服務器的數據是 String 類型,如果傳入的 data 不是 String 類型,會被轉換成 String 。轉換規則如下:
- 對於 header['content-type'] 為 'application/json' 的數據,會對數據進行 JSON 序列化
- 對於 header['content-type'] 為 'application/x-www-form-urlencoded' 的數據,會將數據轉換成 query string (encodeURIComponent(k)=encodeURIComponent(v)&encodeURIComponent(k)=encodeURIComponent(v)...)
2).method
1.默認為 GET,有效值:OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
2.值必須為大寫
3) header
1.header 為 application/json,接口傳回來的參數要是json 格式的,否則會報500錯誤,比如我接口返回來的參數是xml則header['content-type'] 要設置為'application/x-www-form-urlencoded'
踩過的坑
請求接口 res.statusCode一直是500,顯示以下錯誤
這個錯誤的原因是 header['content-type'] 我設置為 'application/json',而接口返回的參數類型為xml格式
如果接口返回的參數不是json 格式, header['content-type']請設置為'application/x-www-form-urlencoded',那么返回的參數是string類型的,處理的話有點麻煩。
我把 header['content-type']設置為 'application/json',修改接口,使其返回的參數是json格式的 那就好處理多了。
在發開中可以把一些錯誤信息輸出在控制台后,方便看,調試完全沒問題后再去掉。