91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在微信小程序中利用http連接訪問

發布時間:2021-05-11 18:21:14 來源:億速云 閱讀:2644 作者:Leah 欄目:web開發

本篇文章給大家分享的是有關怎么在微信小程序中利用http連接訪問,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

1.中繼訪問

怎么在微信小程序中利用http連接訪問

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

擁有域名和云服務器

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

https指引教程如下------>

騰訊云上免費部署HTTPS

再講域名解析到你的云服務器的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}`);

  });

 })

}

以上就是怎么在微信小程序中利用http連接訪問,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

石门县| 龙南县| 绩溪县| 中阳县| 阿拉善盟| 蒙城县| 荆州市| 化州市| 湘潭县| 望江县| 穆棱市| 喀喇沁旗| 定州市| 边坝县| 庐江县| 华蓥市| 和林格尔县| 花垣县| 东乡| 泸州市| 高邑县| 大安市| 宁晋县| 淳安县| 汉川市| 万宁市| 老河口市| 西吉县| 钦州市| 恩施市| 阿拉善盟| 曲沃县| 普定县| 高密市| 南漳县| 南陵县| 平罗县| 淅川县| 视频| 浙江省| 宣汉县|