中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
微信小程序https請求wx.request詳細教程
作者:微信公眾號網(wǎng)時間:2017-03-15

  在一個網(wǎng)站里面發(fā)起https請求是很常見的,但是,由于微信小程序是騰訊內(nèi)部的產(chǎn)品,不能直接打開一個外部的鏈接,例如,您在微信小程序里面無法直接打開www.phpos.net網(wǎng)站,但是,在做小程序開發(fā)的時候,如果想調(diào)用這個網(wǎng)站的一個接口,這時,如何使用?因為,微信小程序里面不能直接使用瀏覽器,所以,只有使用騰訊給我們封裝好的API wx.request(object)。

  wx.request其實是騰訊封裝好的一個request請求的函數(shù),類似php語言里面的函數(shù),在php程序里面的函數(shù)是由開發(fā)php程序的公司用c語言封裝好的一個一個的函數(shù),我們做php開發(fā)的,只需要拿過來這些函數(shù)使用即可,不需要關心函數(shù)底層代碼,同樣,wx.request是騰訊給我們封裝好的“函數(shù)”直接拿過來用就行了,只要理解了這個“函數(shù)”里面的參數(shù)的使用即可。

  下面我們將結合一個實例來詳細分析wx.request的參數(shù)的含義以及使用,最后,我們將分別用兩個實例來實踐使用一下這個函數(shù)。


參數(shù):

  1)接口地址url:

  微信小程序里面的數(shù)據(jù)就是由這個url來獲取的,所以,這個url接口非常重要,一般這個接口url返回的是json數(shù)據(jù)格式,這樣不僅處理起來方便,而且,傳輸安全穩(wěn)定,容易保存。所以,一般的第三方提供的接口返回的數(shù)據(jù)都是以json格式形式返回的。

  小程序手冊上說url是開發(fā)者服務器的接口,其含義是開發(fā)者自己的服務器和調(diào)用第三方的服務器上面上的接口url。

  也就是說url接口地址有兩大來源分別是:開發(fā)者自己的服務器上面的接口和第三方服務器提供我們使用的接口。

  可能會有問為什么會有這兩個來源呢? 例如,您要開發(fā)一個快遞查詢小程序,這時一般都會調(diào)用第三方提供的快遞接口,因為,我們不可能為了開發(fā)一個小程序而去開發(fā)一套快遞系統(tǒng),并添加上快遞數(shù)據(jù),但是,我們又不是做快遞公司的,所以,無法實時動態(tài)的獲取用戶的數(shù)據(jù)信息,這些信息都掌握在好些快遞公司里面,所以,要獲取這樣的大數(shù)據(jù),我們只能使用這些快遞公司提供的接口,來獲取快遞的數(shù)據(jù)。

  如果對于一些小數(shù)據(jù),例如,查詢唐詩宋詞,我們完全可以自己創(chuàng)建一個網(wǎng)站,然后,自己開發(fā)一個接口url自己進行調(diào)用,因為,這些數(shù)據(jù)網(wǎng)上多的是,可以自己采集到網(wǎng)站,當然,如果您的流量獲取不是從百度等搜索引擎而來的話,可以采集數(shù)據(jù)放到自己網(wǎng)站上面,然后,寫一個接口在小程序里面使用。

  上面介紹的是url兩種接口,我們舉例子也是以這兩種接口來舉例子。


  2)請求參數(shù)data:

  當我們對url進行https請求時,實際上跟在瀏覽器打開一個網(wǎng)址是一個道理,在瀏覽器打開網(wǎng)址http://www.phpos.net/index.php?id=9(此url為模擬用的),實際上是向這個域包所在的服務器發(fā)送了一個https請求,在這個請求里面使用了參數(shù)id=9,也就是請id為9的內(nèi)容,這里的id=9就是這個url請求時的參數(shù)。

  data值就是使用wx.request時,url里面的參數(shù),也就是問號后面的參數(shù)。

格式:

  url:'http://www.phpos.net/index.php',
  data: {
     id: '2' ,
     name: 'lili'
  }

  上面等價于:
url:'http://www.phpos.net/index.php?id=2&name=lili',


data 數(shù)據(jù)說明:最終發(fā)送給服務器的數(shù)據(jù)是 String 類型,如果傳入的 data 不是 String 類型,會被轉換成 String 。轉換規(guī)則如下:

    對于 header['content-type'] 為 'application/json' 的數(shù)據(jù),會對數(shù)據(jù)進行 JSON 序列化
    對于 header['content-type'] 為 'application/x-www-form-urlencoded' 的數(shù)據(jù),會將數(shù)據(jù)轉換成 query string (encodeURIComponent(k)=encodeURIComponent(v)&encodeURIComponent(k)=encodeURIComponent(v)...)

 
3) 請求的 header:

  https請求的頭部header是在用戶打開小程序,然后,請求url時一起傳到url所在的服務器時的頭部信息,如果學過http協(xié)議的話,這個就好理解了。

  例如,我在火狐上面打開www.phpos.net,就相當于對這個網(wǎng)址所在的服務器作了https請求,在請求這個網(wǎng)址所在的服務器時,會通過http協(xié)議把頭部信息一起傳遞到這個網(wǎng)址所在的服務器,如下圖所示:


  請求頭包括host、User-Agent、Accept、Accpt-Language、Referer等,請注意這些頭部信息與您請求某個網(wǎng)址是不盡相同是有差別的。

  在使用wx.request時,我們就可以使用header來添加請求頭部信息,把請求頭信息一起傳遞給服務器(例如,請求www.phpos.net時,就會把這個請求頭發(fā)送給這網(wǎng)站所在的網(wǎng)址)。

  也就是說我們請求一個網(wǎng)址,實際上一起跟著這個網(wǎng)址傳遞到服務器的還有“請求頭”,只是我們看不到罷了,但是,實際上是發(fā)生了,如上圖所示。

  當請求完信息后,服務器再通過http協(xié)議把請求的信息返回給請求的用戶(也就是打開網(wǎng)址的用戶),此時,有一個“響應頭”返回給用戶,只是用戶感覺不到看不到罷了。

  從上面可以知道請求頭和響應頭是用戶在打開一個url時,相當于向url所在的服務器發(fā)送了帶有“請求頭”的請求,等服務器處理完數(shù)據(jù)(例如,查詢數(shù)據(jù)庫數(shù)據(jù))后,就會通過一個“響應頭”把一些重要信息返回給用戶,當然,用戶不知道這些信息,也看不到。

請求的 header格式:

  header: {
      'content-type': 'application/json'
  },


  請注意:小程序規(guī)定header中不能設置 Referer,因為,這個請求頭的參數(shù)表示網(wǎng)址從哪里來,而在小程序里面并沒有哪個網(wǎng)址從哪里來,只有一個接口url,所以,這個請求頭的參數(shù)實際上沒有什么用處,您寫上也不會起作用。
 
4)函數(shù)success:

  當一個https請求成功時,小程序就會自動觸發(fā)這個返回成功信息的函數(shù),這個函數(shù)是騰訊自己封裝好的,而不是我們自己去寫的。

  這個函數(shù)獲取的是從開發(fā)者服務器返回的數(shù)據(jù)(一般為json格式),因為,獲取到的數(shù)據(jù)就是我們要渲染到小程序頁面的數(shù)據(jù),所以,這個非常重要,下面舉例來說明獲取到的“數(shù)據(jù)”。

示例:

  //request.wxml
    <view class="btn-area">
      <button bindtap="makeRequest" type="primary" disabled="{{buttonDisabled}}" loading="{{loading}}">request</button>
    </view>
  </view>

 //request.js
 Page({
  makeRequest: function() {
    var self = this
    wx.request({
      url:'https://www.v2ex.com/api/topics/show.json?id=520',
      data: {
        noncestr: Date.now()
      },
      success: function(result) {
        console.log('request success', result)
      }
    })
  }
})

  上面我們使用url接口是:https://www.v2ex.com/api/topics/show.json?id=520

  這個url接口可以返回json格式的數(shù)據(jù),您可以直接在瀏覽器上面打開看一下,結果如下所示:


  請求成功后獲取到的數(shù)據(jù)就是success函數(shù)的參數(shù)result,打印這個數(shù)據(jù)如果如下所示:



  從上圖可以知道,result是一個對象,在這個對象里面有一個data數(shù)組,在這個數(shù)組里面下標為0的元素是一個對象,在這個對象里面是從接口獲取到的數(shù)據(jù)。

  所以,通過result.data[0]就可以獲取從接口url獲取到的數(shù)據(jù)了,這些數(shù)據(jù)您可以使用函數(shù)setData({...})來動態(tài)添加到小程序視圖層。
 
5)其它兩個函數(shù)fail和complete:

  fail函數(shù):如果接口調(diào)用失敗的話,那么,小程序就會觸發(fā)這個函數(shù),返回錯誤信息。

  complete函數(shù):接口調(diào)用結束的回調(diào)函數(shù)(調(diào)用成功、失敗都會執(zhí)行)

使用第三方接口url示例:

//request.wxml
  <view class="page-body">
    <view class="page-body-wording">
      <text class="page-body-text">
        點擊向服務器發(fā)起請求
      </text>
    </view>
    <view class="btn-area">
      <button bindtap="makeRequest" type="primary" disabled="{{buttonDisabled}}" loading="{{loading}}">request</button>
    </view>
  </view>

//request.js
Page({
  makeRequest: function() {
    var self = this

    self.setData({
      loading: true
    })
    wx.request({
     // url: requestUrl,
     url:'https://www.v2ex.com/api/topics/show.json?id=520',
      data: {
        noncestr: Date.now()
      },
      success: function(result) {
        wx.showToast({
          title: '請求成功',
          icon: 'success',
          mask: true,
          duration: duration
        })
        self.setData({
          loading:false
        })
        console.log('request success', result)
      },

      fail: function({errMsg}) {
        console.log('request fail', errMsg)
        self.setData({
          loading: false
        })
      }
    })
  }
})




開發(fā)自己的接口url

  有時候我們需要自己開發(fā)一個接口,來調(diào)用我們自己的服務器上面的數(shù)據(jù),例如,一個企業(yè)的數(shù)據(jù),一般來說第三方不會開發(fā)這樣的數(shù)據(jù),所以,此時,企業(yè)就應當開發(fā)自己的接口,而且,開發(fā)自己的接口比使用第三方接口的例子要多很多。

  下面將開發(fā)一個我們自己的接口,調(diào)取的數(shù)據(jù)是從安裝在本地的織夢系統(tǒng)搭建的網(wǎng)站里面獲取的數(shù)據(jù)。

  我們的目標是獲取網(wǎng)站里面的內(nèi)容的id和標題,然后,把id和id對應的標題顯示在小程序里面,這其實是一個簡單的小程序開發(fā),我們在小程序里面看到的數(shù)據(jù)(圖片,文字,音頻等)都是通過這樣獲取的。

接口url的php文件代碼:

//phpos.php
<?php
require('./dedecms/include/common.inc.php');
$db->Execute('al','SELECT id ,title FROM `dede_archives`  order by id desc limit 0,10');
while ($row=$db->GetArray('al')) {
    $arr[]=$row;
}
echo json_encode($arr);

?>


  上面是獲取最新10條更新的數(shù)據(jù)接口url,返回的數(shù)據(jù)是json格式,如下所示:
 

[{"id":"107","title":"PHP\u6b63\u5219\u8868\u8fbe\u5f0f\u7684\u51e0\u5219\u4f7f\u7528\u6280\u5de7"},
{"id":"106","title":"{dede:\u62db\u8058\u542f\u4e8b \u6807\u9898='\u7ec7\u68a6\u5927\u5bb6\u5ead\u65b0\u5e74\u62db\u52df\u7b2c\u4e00\u6ce2'}"},
{"id":"98","title":"DedeCMS\u4ea7\u54c1\u6388\u6743\u5728\u7ebf\u8d2d\u4e70"},
{"id":"97","title":"DedeCMS \u6700\u7ec8\u7528\u6237\u6388\u6743\u534f\u8bae"},
{"id":"96","title":"\u6211\u7684\u773c\u754c-\u4e00\u4e9b\u5173\u4e8e\u82b1\u7684\u7167\u7247"},
{"id":"95","title":"\u539f\u521b\u98ce\u666f\u56fe\u7247"},
{"id":"94","title":"\u6b66\u5937\u5c71\u7684\u7f8e\u666f\u771f\u662f\u4e0d\u9519"},
{"id":"93","title":"\u6d77\u5c9b\u98ce\u5149"},
{"id":"92","title":"DedeCMS V5.6 \u5f00\u53d1\u65e5\u5fd7\u53ca\u65b0\u5efa\u8bae\u63d0\u4ea4\u8d34"},
{"id":"91","title":"DedeCMS\u4ea7\u54c1\u76f8\u5173\u622a\u56fe"}]


  這樣在小程序里面成功調(diào)用接口url文件phpos.php后,在函數(shù)success里面獲取到的數(shù)據(jù)就是上面的最新10條數(shù)據(jù),如下所示:



小程序里面的.wxml和.js代碼分別是:
 

//index.wxml
<view class="container">
  <block wx:for="{{contents}}">
    <view>
      <text>{{item.id}}---{{item.title}}</text>
    </view>
  </block>
</view>
//index.js
var app = getApp()
Page({
  data: {
    contents:{}
  },

  onLoad: function (option) {
    var self = this
    wx.request({
      url: 'http://localhost/phpos.php',
      data: {},
      method: 'GET',
      success: function(res){
        // success
        self.setData({
         contents:res.data
        })
      },
      fail: function() {
        // fail
      },
      complete: function() {
        // complete
      }
    })
  }
})


結果:



  上面結果表示:我們成功從我們自己網(wǎng)站里面獲取數(shù)據(jù)并顯示在小程序里面了,雖然,顯示的結果的排版不美觀,但是,我們主要實現(xiàn)的是這個功能至于排版,只需要寫上wxss就可以了,這里就不寫樣式代碼了。

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
小程序?qū)觩hp接口接收數(shù)據(jù)
開發(fā) | 無需后端編碼,手把手教你把 WordPress 做成小程序
wx.request(Object object) HTTPS 網(wǎng)絡請求 封裝
微信小程序與Java后臺的通信
小程序性能優(yōu)化指南
小程序查地鐵使用評測體驗
更多類似文章 >>
生活服務
熱點新聞
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服