亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 課堂 > 小程序 > 正文

微信小程序http連接訪問解決方案的示例

2020-03-21 16:01:24
字體:
來源:轉載
供稿:網友

HTTP + 加密 + 認證 + 完整性保護 = HTTPS,小程序考慮到信息安全的問題,選用了更為穩定安全的https 來進行信息傳遞。

HTTPS協議的主要作用可以分為兩種:一種是建立一個信息安全通道,來保證數據傳輸的安全;另一種就是確認網站的真實性。

這就導致了許多好用的http  API無法在小程序中被調用。

但是也有解決方案。

1.中繼訪問

微信小程序,http,訪問

中繼訪問有兩種方式,一種需要自己擁有一個云服務和域名。

擁有域名和云服務器

域名完成備案之后下載證書

再講域名解析到你的云服務器的IP。

這樣子你的域名就是https的了,小程序可以訪問你的服務器了,現在就開始在云服務上實現訪問http API 服務

實際上只需要面向小程序和API Server 做一個雙面響應即可。

微信小程序,http,訪問

實現這種功能,顯而易見,在服務器上部署一個Web項目是最簡單的實現方式:

我們以訪問豆瓣圖書API 為例:https://api.douban.com/v2/book/isbn/

豆瓣API雖然是https的,但是來自小程序的訪問是被禁止的。下面代碼同樣適用于http 連接

Java代碼:

這個是 通用代碼 ,無論是訪問什么API

package DataService; import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.PrintWriter;import java.net.HttpURLConnection;import java.net.URL;import java.net.URLConnection;import java.sql.ResultSet; import com.google.gson.Gson; /* * Author:陳浩東 * QQ:1025584691 */public class DouBanBook {  //豆瓣接口實現  public static String doPost(String url, String params, Integer connTimeout, Integer readTimeout, String contentType)  {    PrintWriter out = null;    BufferedReader in = null;    String result = "";    try    {      URL realUrl = new URL(url);      // 打開和URL之間的連接,根據url      URLConnection conn = realUrl.openConnection();      // 設置通用的請求屬性      conn.setRequestProperty("accept", "*/*");      conn.setRequestProperty("connection", "Keep-Alive");      conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");      conn.setRequestProperty("Content-Type", contentType == null? "application/json" : contentType);      // 發送POST請求必須設置如下兩行      conn.setDoOutput(true);      conn.setDoInput(true);         // 設置請求超時時間和讀取超時時間      conn.setConnectTimeout(connTimeout == null ? 180 : connTimeout);      conn.setReadTimeout(readTimeout == null ? 180 : readTimeout);         // 獲取URLConnection對象對應的輸出流,設置utf-8編碼      out = new PrintWriter(new OutputStreamWriter(conn.getOutputStream(), "utf-8"));      // 發送請求參數      out.print(params);      // flush輸出流的緩沖      out.flush();      // 定義BufferedReader輸入流來讀取URL的響應,設置utf-8編碼      in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"));      String line;      while ((line = in.readLine()) != null)        result += line;    }    catch (Exception e)    {      e.printStackTrace();      result = null;    }    //使用finally塊來關閉輸出流、輸入流    finally    {      try      {        if (out != null)        {          out.close();        }        if (in != null)        {          in.close();        }      }      catch (IOException ex)      {        ex.printStackTrace();      }    }    return result;  }}

根據訪問不同的API,只需要修改Servlet的寫法就可以:

Servlet:

package Servlet; import java.io.IOException;import java.io.Writer;import java.util.HashMap;import java.util.Map; import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse; import com.google.gson.Gson; import DataService.DouBanBook; /** * Servlet implementation class doubanbook */@WebServlet("/doubanbook")public class doubanbook extends HttpServlet {  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {     request.setCharacterEncoding("utf-8");      response.setContentType("text/html;charset=utf-8");      response.setHeader("Access-Control-Allow-Origin", "*");      response.setHeader("Access-Control-Allow-Methods", "GET,POST");      String isbn = request.getParameter("isbn")==null?"no":request.getParameter("isbn");      String sshpwd = request.getParameter("ssh_secret")==null?"no":request.getParameter("ssh_secret");      System.out.println(sshpwd);      System.out.println(isbn);      Map<String, Object> result = new HashMap<String, Object>();      String json = new Gson().toJson(result);      Writer out = response.getWriter();      out.write(DouBanBook.doPost("https://api.douban.com/v2/book/isbn/"+isbn, null, null, null, null));         out.flush();  }  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {    // TODO Auto-generated method stub    doGet(request, response);  }}

同樣,你也可以用Python,php等語言來實現中繼訪問這個功能。

無域名和云服務器

對于個人開發者來說,尤其是學生來說,又是是沒有條件購買長時間的云服務器的,這個時候我們如果是開發小程序的話,可以用他們提供的空間。

使用微信小程序的云開發能力,Node.js 函數,用js 實現服務端的響應,訪問非https API。

參照寫法一:

云函數調用方式訪問API

const cloud = require('wx-server-sdk') cloud.init() // 云函數入口函數exports.main = async (event, context) => { console.log(event) console.log(context)  return new Promise((resolve, reject) => {   var url = event.url;//前端小程序傳的data   var https = require('https');  https.get(url, function (res) {   var size = 0;   var chunks = [];   res.on('data', function (chunk) {    size += chunk.length;    chunks.push(chunk);   });   res.on('end', function () {    var data = Buffer.concat(chunks, size).toString();    console.log(data)    resolve(JSON.parse(data))   });  }).on('error', (e) => {   console.log(`url:${url} error: ${e.message}`);  }); })}

不知道什么原因,云函數我感覺并不是很穩定,建議有條件的還是用自己的服務器來實現吧。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩欧美在线字幕| 欧美日韩国产在线播放| 一区二区中文字幕| 91a在线视频| 91日韩在线播放| 日韩美女免费视频| 久久久女人电视剧免费播放下载| 亚洲国产欧美日韩精品| 欧美日韩视频在线| 一区二区三区无码高清视频| 性色av一区二区三区红粉影视| 亚洲成人教育av| 在线丨暗呦小u女国产精品| 久久精品亚洲一区| 国产精品夜色7777狼人| 国产精品久久久久久超碰| 在线播放日韩av| 成人网址在线观看| 国产日韩欧美另类| 国产精品99一区| 日韩在线欧美在线| 中文日韩电影网站| 久久人人看视频| 日韩久久免费电影| 日韩国产欧美精品在线| 久久久久国产精品一区| 国产精品亚洲视频在线观看| 亚洲一区中文字幕| 久久久久久18| 久久精品这里热有精品| 精品久久香蕉国产线看观看gif| 久久久精品日本| 欧美精品一区三区| 国产成人久久久精品一区| 久久精品国产电影| 日韩国产高清污视频在线观看| 成人观看高清在线观看免费| 性夜试看影院91社区| 欧美激情亚洲精品| 美女999久久久精品视频| 亚洲第一色在线| 久久99亚洲精品| 久久久久久亚洲精品不卡| 久久精品成人一区二区三区| 国产精品视频一区国模私拍| 色与欲影视天天看综合网| 欧美日韩中文字幕日韩欧美| 欧美成人精品一区二区| 亚洲国产精品va在线看黑人| 成人免费视频网址| 亚洲激情在线视频| 亚洲人成网站999久久久综合| 亚洲午夜未删减在线观看| 欧美性视频在线| 中文字幕亚洲无线码a| 亚洲第一页自拍| 国产99视频精品免视看7| 久久精品免费电影| 国内揄拍国内精品| 久久夜色精品亚洲噜噜国产mv| 欧美成人免费网| 欧美午夜激情在线| 国产成人拍精品视频午夜网站| 成人av在线网址| 午夜伦理精品一区| 国产成人小视频在线观看| 国产精品www色诱视频| 国产成人涩涩涩视频在线观看| 久久夜色精品国产亚洲aⅴ| 精品调教chinesegay| 亚洲国产精品国自产拍av秋霞| 中文字幕日韩精品在线| 久久亚洲一区二区三区四区五区高| 成人情趣片在线观看免费| 成人乱人伦精品视频在线观看| 午夜精品久久久久久99热软件| 中文字幕久热精品在线视频| 欧美俄罗斯乱妇| 一个人www欧美| 亚洲在线观看视频| 亚洲天堂开心观看| 91国产在线精品| 欧美性猛交xxxx乱大交极品| 国产视频久久久久久久| 国产精品最新在线观看| 亚洲欧洲自拍偷拍| 欧美午夜精品久久久久久久| 国产不卡视频在线| 欧美另类极品videosbestfree| 欧美极品在线视频| 精品美女国产在线| 日韩精品视频观看| 久久不射电影网| 懂色av中文一区二区三区天美| 亚洲男人的天堂网站| 国产精品第一第二| 97人人做人人爱| 色偷偷亚洲男人天堂| 欧美裸体视频网站| 国产精品第一视频| 中文字幕亚洲欧美在线| 国产精品欧美一区二区三区奶水| 亚洲夜晚福利在线观看| 久久久久国产精品免费网站| 91在线中文字幕| 精品美女永久免费视频| 欧美三级欧美成人高清www| 91精品在线播放| 7777精品久久久久久| 一区二区欧美日韩视频| 91久久精品日日躁夜夜躁国产| 亚洲经典中文字幕| 一区二区在线视频播放| 日韩男女性生活视频| 成人中文字幕在线观看| 久久精品2019中文字幕| 自拍视频国产精品| 精品久久久久久久久久久久久| 精品国产一区av| 国产在线98福利播放视频| 一本一本久久a久久精品牛牛影视| 国产+成+人+亚洲欧洲| 97香蕉久久超级碰碰高清版| 色悠悠久久88| 久久精品2019中文字幕| 国产中文字幕91| 色多多国产成人永久免费网站| 久99久在线视频| 久久久久久国产精品久久| 日韩电影在线观看免费| 国产精品高清免费在线观看| 国产精品久在线观看| 影音先锋欧美在线资源| 亚洲成人在线网| 欧美精品免费在线观看| 久久精品这里热有精品| 91网在线免费观看| www.亚洲人.com| 欧美与欧洲交xxxx免费观看| 成人精品久久av网站| 亚洲国产日韩欧美在线图片| 神马国产精品影院av| 日韩精品黄色网| 欧美日韩国产一区中文午夜| 精品久久久久久国产| 精品福利在线观看| 日本高清视频一区| 成人亚洲综合色就1024| 色综合久久悠悠| 97成人精品视频在线观看| 欧美成人精品激情在线观看| 欧美性xxxxxx| 亚洲精品久久在线| 青青久久aⅴ北条麻妃| 国产啪精品视频网站| 欧美日韩成人黄色| 精品美女久久久久久免费| 中文字幕国产精品| 欧美成人精品影院| 日本高清+成人网在线观看| 国产精品久久久久久久av电影| 久久精品99久久久香蕉| 奇门遁甲1982国语版免费观看高清| 国产精品h在线观看|