日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

微信公众号开发经验总结

發(fā)布時(shí)間:2023/12/10 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 微信公众号开发经验总结 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

微信公眾號(hào)開(kāi)發(fā)經(jīng)驗(yàn)總結(jié)

1.??????????????? 快捷訪(fǎng)問(wèn)

1.1?? 測(cè)試公眾號(hào)注冊(cè):

http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

1.2?? 微信公眾號(hào)開(kāi)發(fā)指南:

https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1445241432

1.3?? 微信全局返回碼說(shuō)明:

https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1433747234

1.4?? 微信公眾號(hào)接口權(quán)限說(shuō)明:

???????? https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1433401084

?

2????? ?注冊(cè)一個(gè)公眾號(hào)賬戶(hù)(也可先用測(cè)試公眾號(hào)調(diào)試環(huán)境)

2.1????????????? 賬戶(hù)注冊(cè)

2.1.1????????? 正確填寫(xiě)下列信息

?

注意:

URL必須以http:// 或者h(yuǎn)ttps:// 開(kāi)頭,分別支持80端口和443端口;

Token必須為英文或者數(shù)字,長(zhǎng)度為3-32字符;

?

2.1.2????????? 開(kāi)發(fā)過(guò)程中,需要注意接口的調(diào)用次數(shù),

?

2.1.3????????? 注意檢查URL和JS接口安全域名,可以保持一致,也可以不一樣,個(gè)人建議最好保持一致;

?

3????? 測(cè)試開(kāi)發(fā)環(huán)境

Eg:

微信網(wǎng)頁(yè)授權(quán)access_token和普通access_token區(qū)別

https://blog.csdn.net/benben_2015/article/details/79703508

微信獲取用戶(hù)信息的兩個(gè)接口和兩個(gè)ACCESS_TOKEN

?????????? https://www.cnblogs.com/sxmny/articles/4969119.html

?

2.1 記錄全局定量(獲取Token的兩個(gè)定量,在微信公眾號(hào)-賬戶(hù)信息處可以查詢(xún)):

Appid?????????????????? 應(yīng)用ID

AppSecret????????? 應(yīng)用密匙

2.2 獲取普通access_token(access_token是公眾號(hào)的全局唯一接口調(diào)用憑據(jù),公眾號(hào)調(diào)用各接口時(shí)都需要使用access_token)

調(diào)用接口:

URL:? ????? https://api.weixin.qq.com/cgi-bin/token

參數(shù): ??? grant_type : “client_credential”--------獲取access_token填寫(xiě)client_credential???????????? ? ???? ???????? Appid : Appid---------第三方用戶(hù)唯一憑證

??????????????????? AppSecret : AppSecret-----------第三方用戶(hù)唯一憑證密鑰,即appsecret

返回參數(shù):????? access_token---------獲取到的憑證

???????????????????????????? expires_in----------憑證有效事件,單位:秒

注:公眾號(hào)對(duì)此接口的調(diào)用是有次數(shù)限制的,默認(rèn)是2000,花錢(qián)可增加次數(shù),獲取的access_token的有效期默認(rèn)是2小時(shí),故而,在開(kāi)發(fā)過(guò)程中,可將調(diào)用此接口的access_token設(shè)為全局變量,并將次接口的調(diào)用方法設(shè)為全局自動(dòng)調(diào)用,獨(dú)立出來(lái);

Eg(將獲取access_token的接口獨(dú)立,并調(diào)整為100分鐘自動(dòng)刷新):

package com.gzh.api.utils;

?

import java.util.Map;

import java.util.Timer;

import java.util.TimerTask;

import java.util.concurrent.atomic.AtomicInteger;

?

import com.alibaba.fastjson.JSONObject;

import com.google.common.collect.Maps;

import com.jfinal.kit.Prop;

import com.jfinal.kit.PropKit;

?

import cn.hutool.http.HttpUtil;

?

/**

?* access_token 自動(dòng)刷新

?* @author Administrator

?*

?*/

public class WxToken {

?

?? public static String globalTokenObject = "";//調(diào)取接口的返回值參數(shù)(access_token、expires_in)

?? public static String globalToken = "";// access_token

?? public static AtomicInteger atomicInteger = new AtomicInteger();//計(jì)數(shù)器,統(tǒng)計(jì)接口調(diào)用的次數(shù)

?? public static String appid = "**************";

?? public static String appsecret = "*************";

?? static {

????? new Timer().schedule(new TimerTask() {

??????? @Override

??????? public void run() {

?????????? Map<String,Object> paramMap = Maps.newHashMap();

?????????? paramMap.put("appid", appid);

?????????? paramMap.put("secret", appsecret);

?????????? paramMap.put("grant_type", "client_credential");

?????????? globalTokenObject = HttpUtil.get("https://api.weixin.qq.com/cgi-bin/token", paramMap);

??????????

?????????? JSONObject wxToken = JSONObject.parseObject(globalTokenObject);

?????????? globalToken = HttpUtil.get("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + wxToken.getString("access_token") + "&type=jsapi");???? ?????

?????????? atomicInteger.incrementAndGet();

??????? }

????? }, 0, 2*50*60*1000);

?? }?

}

?

2.3 獲取用戶(hù)Code/微信訪(fǎng)問(wèn)公眾號(hào)地址

使用微信打開(kāi)如下地址https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

?

參數(shù):appid---------appid

redirect_uri-------系統(tǒng)路徑,需與微信公中號(hào)綁定路徑一致

response_type-------“code”字符串

scope------“snsapi_userinfo”字符串

state------“1”字符串

?

(注意這個(gè)接口中有個(gè)參數(shù)scope 默認(rèn)有2個(gè)值snsapi_base和snsapi_userinfo,這個(gè)接口會(huì)根據(jù)scope 來(lái)生成不同的code并且獲取不同作用的access_token?,不管scope傳什么值都能在得到對(duì)應(yīng)access_token的同時(shí)得到open_id, 如果你只需要得到opend_id 那使用snsapi_base參數(shù)到此結(jié)束了,如果需要獲取用戶(hù)的其他信息比如 昵稱(chēng) 地址 就要snsapi_userinfo 會(huì)彈出授權(quán))

eg:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx97967746637ee7c4&redirect_uri=http://www.HuaLuo.com/gzh/gzh/app.html&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect

直接在微信中訪(fǎng)問(wèn),系統(tǒng)中用如下方法接收:

//獲取用戶(hù)code?????? --var code = getCode(‘code’);

Function getCode(name){

??????? var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");

var r = window.location.search.substr(1).match(reg);

if (r != null) return unescape(r[2]); return null;

}

即可拿到用戶(hù)Code;

2.4 獲取openid

簡(jiǎn)單的實(shí)現(xiàn)微信獲取openid

https://blog.csdn.net/z880698223/article/details/78485243/

????? 1.調(diào)用https://open.weixin.qq.com/connect/oauth2/authorize接口獲取到code

《參數(shù)2.3》

2.得到code作為一個(gè)參數(shù)調(diào)用https://api.weixin.qq.com/sns/oauth2/access_token接口獲取到openid 《參照2.5》

2.5 獲取微信網(wǎng)頁(yè)授權(quán)access_token

調(diào)用接口:

URL: ???????? https://api.weixin.qq.com/sns/oauth2/access_token

參數(shù):?????

grant_type : “authorization_code”--------填寫(xiě)client_credential

Appid : Appid---------第三方用戶(hù)唯一憑證

AppSecret : AppSecret-----------第三方用戶(hù)唯一憑證密鑰,即appsecret

Code:Code----------標(biāo)識(shí)不同的用戶(hù)code 《參照2.3》

返回參數(shù):

Openid

access_token

?

2.6 獲取微信用戶(hù)信息

???????? EG:

https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

???????? 調(diào)用接口:

???????? URL: ?????? https://api.weixin.qq.com/sns/userinfo

???????? 參數(shù):

???????? ???????? Openid-----《參照2.5》

?????????????????? Lang----“zh_CN”字符串

?????????????????? access_token------《參照2》>(注:此access_token網(wǎng)上資料說(shuō)需要普通access_token,及調(diào)用《2.2》接口返回的普通access_token,但是實(shí)際中發(fā)現(xiàn)調(diào)用《2.5》接口返回的網(wǎng)頁(yè)授權(quán)access_token也可以拿到用戶(hù)信息,故而實(shí)際開(kāi)發(fā)中可換著調(diào)用調(diào)試,個(gè)人建議使用普通access_token,因?yàn)殚_(kāi)文提出將此參數(shù)定義為全局變量,故而對(duì)代碼一致性維護(hù)較方便)

???????? 返回參數(shù):

???????? Subscribe--------用戶(hù)是否訂閱該公眾號(hào)標(biāo)識(shí),值為0時(shí),代表此用戶(hù)沒(méi)有關(guān)注該公眾號(hào),拉取不到其余信息

???????? Openid----------用戶(hù)的標(biāo)識(shí),對(duì)當(dāng)前公眾號(hào)唯一

???????? Nickname-----------用戶(hù)的昵稱(chēng)

???????? Sex----------用戶(hù)的性別,值為1時(shí)是男性,值為2時(shí)是女性,值為0時(shí)是未知

???????? City----------用戶(hù)所在城市

???????? Country-------------用戶(hù)所在國(guó)家

???????? Province-----------用戶(hù)所在省份

???????? Language---------用戶(hù)的語(yǔ)言,簡(jiǎn)體中文為zh_CN

???????? Headimgurl-----------用戶(hù)頭像,最后一個(gè)數(shù)值代表正方形頭像大小(有0、46、64、96、132數(shù)值可選,0代表640*640正方形頭像),用戶(hù)沒(méi)有頭像時(shí)該項(xiàng)為空。若用戶(hù)更換頭像,原有頭像URL將失效

???????? subscribe_time-------------用戶(hù)關(guān)注時(shí)間,為時(shí)間戳。如果用戶(hù)曾多次關(guān)注,則取最后關(guān)注時(shí)間

???????? unionid------------只有在用戶(hù)將公眾號(hào)綁定到微信開(kāi)放平臺(tái)帳號(hào)后,才會(huì)出現(xiàn)該字段

???????? remark-----------公眾號(hào)運(yùn)營(yíng)者對(duì)粉絲的備注,公眾號(hào)運(yùn)營(yíng)者可在微信公眾平臺(tái)用戶(hù)管理界面對(duì)粉絲添加備注

???????? groupid ------------- 用戶(hù)所在的分組ID(兼容舊的用戶(hù)分組接口)

tagid_list ------------用戶(hù)被打上的標(biāo)簽ID列表

subscribe_scene----------- 返回用戶(hù)關(guān)注的渠道來(lái)源,ADD_SCENE_SEARCH 公眾號(hào)搜索,ADD_SCENE_ACCOUNT_MIGRATION 公眾號(hào)遷移,ADD_SCENE_PROFILE_CARD 名片分享,ADD_SCENE_QR_CODE 掃描二維碼,ADD_SCENEPROFILE LINK 圖文頁(yè)內(nèi)名稱(chēng)點(diǎn)擊,ADD_SCENE_PROFILE_ITEM 圖文頁(yè)右上角菜單,ADD_SCENE_PAID 支付后關(guān)注,ADD_SCENE_OTHERS 其他

qr_scene ------------二維碼掃碼場(chǎng)景(開(kāi)發(fā)者自定義)

qr_scene_str------------ 二維碼掃碼場(chǎng)景描述(開(kāi)發(fā)者自定義)

?

2.7 調(diào)用微信JS-SDK,獲取jsapi_ticket

微信公眾平臺(tái)jsapi開(kāi)發(fā)教程(1)獲取:

https://blog.csdn.net/linfanhehe/article/details/52354848

生成簽名之前必須先了解一下jsapi_ticket,jsapi_ticket是公眾號(hào)用于調(diào)用微信JS接口的臨時(shí)票據(jù)。正常情況下,jsapi_ticket的有效期為7200秒,通過(guò)access_token來(lái)獲取。由于獲取jsapi_ticket的api調(diào)用次數(shù)非常有限,頻繁刷新jsapi_ticket會(huì)導(dǎo)致api調(diào)用受限,影響自身業(yè)務(wù),開(kāi)發(fā)者必須在自己的服務(wù)全局緩存jsapi_ticket ?!秴⒄?.2》和我們獲取普通access_token類(lèi)似,由于有訪(fǎng)問(wèn)次數(shù)的限制,我們將次參數(shù)調(diào)為全局自動(dòng)觸發(fā);

?

接口:

URL: https://api.weixin.qq.com/cgi-bin/ticket/getticket

參數(shù): access_token-----《參照2.2》

???????? Type----“jsapi”字符串

返回參數(shù):ticket------------調(diào)用微信jsapi的憑證票

????????

2.8 初始化微信config配置

所有需要使用JS-SDK的頁(yè)面必須先注入配置信息,否則將無(wú)法調(diào)用(同一個(gè)url僅需調(diào)用一次,對(duì)于變化url的SPA的web app可在每次url變化時(shí)進(jìn)行調(diào)用,目前Android微信客戶(hù)端不支持pushState的H5新特性,所以使用pushState來(lái)實(shí)現(xiàn)web app的頁(yè)面會(huì)導(dǎo)致簽名失敗,此問(wèn)題會(huì)在Android6.2中修復(fù))。

???????? 微信調(diào)取音頻、視頻、分享等接口前,需要先初始化驗(yàn)證

JS:

app.ajax('/wxInitConfig.action',{'url':location.href},function(configDate){

????????????? wx.config({

????????????????? debug: true, // 開(kāi)啟調(diào)試模式,調(diào)用的所有api的返回值會(huì)在客戶(hù)端alert出來(lái),若要查看傳入的參數(shù),可以在pc端打開(kāi),參數(shù)信息會(huì)通過(guò)log打出,僅在pc端時(shí)才會(huì)打印。

????????????????? appId: configDate.appid, // 必填,公眾號(hào)的唯一標(biāo)識(shí)

????????????????? timestamp: configDate.timestamp, // 必填,生成簽名的時(shí)間戳

????????????????? nonceStr: configDate.nonceStr, // 必填,生成簽名的隨機(jī)串

????????????????? signature: configDate.signature,// 必填,簽名,見(jiàn)附錄1

????????????????? jsApiList: ['onMenuShareQQ', 'onMenuShareWeibo', 'onMenuShareTimeline','onMenuShareAppMessage','startRecord','stopRecord','onVoiceRecordEnd','playVoice','stopVoice','onVoicePlayEnd','uploadVoice','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表見(jiàn)附錄2 https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115

????????????? });

?????????? });

ACTION:

public void wxInitConfig(){

?????? JSONObject wxToken = JSONObject.parseObject(WxToken.globalToken);《參照2.2代碼,獲取全局ticket》

?????? String jsapi_ticket = wxToken.getString("ticket");

?????? //此處如果沒(méi)有正常獲取到jsapi_ticket,請(qǐng)查看返回碼,在微信公眾號(hào)中查找錯(cuò)誤信息

?????? //前臺(tái)傳過(guò)來(lái)的當(dāng)前URL訪(fǎng)問(wèn)路徑

?????? String url = Dto.getParam().getString("url");

?

?????? //算法生成時(shí)間戳、簽名等信息,見(jiàn)下列代碼,直接附源碼,不多說(shuō)

?????? Map<String, String> ret = Sign.sign(jsapi_ticket, url);

?????? for (@SuppressWarnings("rawtypes") Map.Entry entry : ret.entrySet()) {

?????????? System.err.println(entry.getKey().toString() + " : " + entry.getValue());

?????? ??? Dto.getResult().set(entry.getKey().toString(), entry.getValue());

?????? }

?????? Dto.getResult().set("appid", wxProp.get("appid"));

??????? this.renderJson(Dto.getResult().getData());

??? }

?

///算法生成時(shí)間戳、簽名等信息/

過(guò)程中可能調(diào)用MessageDigest 包,請(qǐng)自行Baidu下載

package com.gzh.api.utils;

?

import java.util.UUID;

import java.util.Map;

import java.util.HashMap;

import java.util.Formatter;

import java.security.MessageDigest;

import java.security.NoSuchAlgorithmException;

import java.io.UnsupportedEncodingException;?

?

public class Sign {

??? public static void main(String[] args) {

??????? String jsapi_ticket = "jsapi_ticket";

??????? // 注意 URL 一定要?jiǎng)討B(tài)獲取,不能 hardcode

??????? String url = "http://example.com";

??????? Map<String, String> ret = sign(jsapi_ticket, url);

??????? for (Map.Entry entry : ret.entrySet()) {

??????????? System.out.println(entry.getKey() + ", " + entry.getValue());

??????? }

??? };

?

??? public static Map<String, String> sign(String jsapi_ticket, String url) {

??????? Map<String, String> ret = new HashMap<String, String>();

??????? String nonce_str = create_nonce_str();

??????? String timestamp = create_timestamp();

??????? String string1;

??????? String signature = "";

?

??????? //注意這里參數(shù)名必須全部小寫(xiě),且必須有序

??????? string1 = "jsapi_ticket=" + jsapi_ticket +

????????????????? "&noncestr=" + nonce_str +

????????????????? "&timestamp=" + timestamp +

????????????????? "&url=" + url;

??????? System.out.println(string1);

?

??????? try

??????? {

??????????? MessageDigest crypt = MessageDigest.getInstance("SHA-1");

??????????? crypt.reset();

??????????? crypt.update(string1.getBytes("UTF-8"));

??????????? signature = byteToHex(crypt.digest());

??????? }

??????? catch (NoSuchAlgorithmException e)

??????? {

??????????? e.printStackTrace();

??????? }

??????? catch (UnsupportedEncodingException e)

??????? {

??????????? e.printStackTrace();

??????? }

?

??????? ret.put("url", url);

??????? ret.put("jsapi_ticket", jsapi_ticket);

??????? ret.put("nonceStr", nonce_str);

??????? ret.put("timestamp", timestamp);

??????? ret.put("signature", signature);

?

??????? return ret;

??? }

?

??? private static String byteToHex(final byte[] hash) {

??????? Formatter formatter = new Formatter();

??????? for (byte b : hash)

??????? {

??????????? formatter.format("%02x", b);

??????? }

??????? String result = formatter.toString();

??????? formatter.close();

??????? return result;

??? }

?

??? private static String create_nonce_str() {

??????? return UUID.randomUUID().toString();

??? }

?

??? private static String create_timestamp() {

??????? return Long.toString(System.currentTimeMillis() / 1000);

??? }

}

?

2.9 調(diào)用微信JS-SDK實(shí)例(以錄音為例);

參考微信開(kāi)發(fā)說(shuō)明文檔

https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115

?

/* 開(kāi)啟錄音*/

wx.startRecord({

success:function() {

?? alert(“接口調(diào)用成功”);

},

Fail:function(){

?? alert(“接口調(diào)用失敗”);//可以檢查access_token權(quán)限或者彈出調(diào)試,具體問(wèn)題具體分析《參照2.8》,開(kāi)啟調(diào)試模式

},

Cancel:function(){

?? alert(“用戶(hù)拒絕提供錄音權(quán)限”);

}

});

/* 停止錄音*/

wx.stopRecord({


success: function (res) {


var localId = res.localId;


}
});

/* 監(jiān)聽(tīng)錄音自動(dòng)停止(由于微信有錄音時(shí)限限制,一次錄音最大時(shí)長(zhǎng)為1分鐘,若超過(guò)此時(shí)=時(shí)限未停止錄音,則執(zhí)行此接口方法)*/

wx.onVoiceRecordEnd({
// 錄音時(shí)間超過(guò)一分鐘沒(méi)有停止的時(shí)候會(huì)執(zhí)行 complete 回調(diào)
complete: function (res) {
var localId = res.localId;
}
});

注:我在此處有一個(gè)錄音時(shí)長(zhǎng)大于一分鐘的問(wèn)題,目前沒(méi)有好的解決方案,樓主在此處的解決方案是:當(dāng)執(zhí)行上述大于一分鐘回調(diào)時(shí),重新開(kāi)啟錄音接口,直至手動(dòng)關(guān)閉錄音;將幾個(gè)錄音的localId存起來(lái),一并發(fā)至后臺(tái)獲取錄音文件,合成一份音頻文件,合成代碼網(wǎng)上找,但這個(gè)方法有一個(gè)Bug,在重新開(kāi)啟錄音,即轉(zhuǎn)換的這個(gè)時(shí)間段,有大概1~2秒的錄音失效期;

? /* 播放錄音 */ wx.playVoice({
localId: '' // 需要播放的音頻的本地ID,由stopRecord接口獲得
}); ? /* 暫停播放錄音 */ wx.pauseVoice({
localId: '' // 需要暫停的音頻的本地ID,由stopRecord接口獲得
});

?

/* 停止播放錄音 */ wx.stopVoice({
localId: '' // 需要停止的音頻的本地ID,由stopRecord接口獲得
}); /* 監(jiān)聽(tīng)錄音播放完畢接口 */ wx.onVoicePlayEnd({
success: function (res) {
var localId = res.localId; // 返回音頻的本地ID
}
}); ? /* 上傳錄音接口 */ wx.uploadVoice({
localId: '', // 需要上傳的音頻的本地ID,由stopRecord接口獲得
isShowProgressTips: 1, // 默認(rèn)為1,顯示進(jìn)度提示
success: function (res) {
var serverId = res.serverId; // 返回音頻的服務(wù)器端ID
}
}); 備注:上傳語(yǔ)音有效期3天,可用微信多媒體接口下載語(yǔ)音到自己的服務(wù)器,此處獲得的 serverId 即 media_id,參考文檔 .目前多媒體文件下載接口的頻率限制為10000次/天,如需要調(diào)高頻率,請(qǐng)登錄微信公眾平臺(tái),在開(kāi)發(fā) - 接口權(quán)限的列表中,申請(qǐng)?zhí)岣吲R時(shí)上限。 ? 根據(jù)serverId獲取微信服務(wù)器上的錄音文件; 調(diào)用接口: URL: http://file.api.weixin.qq.com/cgi-bin/media/get 參數(shù): access_token------參照《2.2》 media_id----------serverId 返回參數(shù)是文件流,需自行解析;附實(shí)例; Eg:

/* (non-Javadoc)

?? ?* @see com.gzh.api.service.ReciteContentService#saveRecite(com.sdp.core.dt.DtoParam)

?? ?*/

?? @Override

?? public DtoResult saveRecite(DtoParam param) throws Exception{

????? /** 參數(shù)接收*/

????? String contentName = Dto.getParam().getString("contentName");//詩(shī)詞名稱(chēng)

????? String contentId = Dto.getParam().getString("contentId");//詩(shī)詞ID

????? String fansId = Dto.getParam().getString("fansId");//粉絲ID

????? String serverId = Dto.getParam().getString("serverId");

?????

????? Record isFans = api.findFirst("select * from gzh_personalcenter where loginid = ?", fansId);

????? if(isFans != null && isFans.get("department") != null && !isFans.get("department").equals("")){

??????? String[] serverIds = Str.isNotAnyEmpty(serverId)?serverId.split(","):null;/* 當(dāng)傳過(guò)來(lái)的serverId有效時(shí)執(zhí)行*/

??????? if(serverIds != null && serverIds.length > 0){

?????????? System.err.println("正在上傳錄音文件...");

?????????? long time1 = System.currentTimeMillis();

?????????? /* 刪除舊錄音文件及數(shù)據(jù)*/

?????????? List<Record> deleteList = api.find("select * from gzh_recitecontent where fansid = ? and contentid = ?", fansId, contentId);

?????????? for(Record re : deleteList){

????????????? File file = new File(fileRoot + re.getStr("path"));

????????????? if(file.exists()) file.delete();

????????????? api.deleteById("gzh_recitecontent", re.getStr("id"));

?????????? }

??????????

?????????? //String token = HttpUtil.get("https://api.weixin.qq.com/cgi-bin/token", paramMap);

?????????? JSONObject wxToken = JSONObject.parseObject(WxToken.globalTokenObject);

??????????

?????????? List<String> tempRecites = new ArrayList<>();/* amr文件集合*/

?????????? List<String> newRecites = new ArrayList<>();/* mp3文件集合*/

?????????? /* 進(jìn)行臨時(shí)目錄創(chuàng)建*/

?????????? String tempResPath = fileRoot + tempPath;

?????????? if(!new File(tempResPath).exists()) new File(tempResPath).mkdirs();

?????????? /* 進(jìn)行錄音文件目錄創(chuàng)建*/

?????????? String realResPath = fileRoot + fileStore + recitePath + "/" + contentId + "/" + fansId;//文件實(shí)際存儲(chǔ)目錄

?????????? if(!new File(realResPath).exists()) new File(realResPath).mkdirs();//先進(jìn)行目錄創(chuàng)建操作

?????????? int size = 0;/* 記錄所有文件輸入流大小*/

?????????? /* 定義輸出流寫(xiě)入?yún)?shù)*/

?????????? FileOutputStream fileOutputStream = null;

?????????? InputStream inputStream = null;

?????????? String fileName = ID.get();/* 文件名稱(chēng)*/

?????????? /* 將文件分批取出并保存為MP3文件*/

?????????? for(int i = 0; i < serverIds.length; i++){

????????????? try{

???????????????? /* 從微信服務(wù)器獲取錄音文件,格式為amr*/

???????????????? String url = "http://file.api.weixin.qq.com/cgi-bin/media/get?access_token="

????????????????????? + wxToken.getString("access_token") + "&media_id=" + serverIds[i];

???????????????? URL urlGet = new URL(url);

???????????????? HttpURLConnection http = (HttpURLConnection) urlGet.openConnection();

???????????????? http.setRequestMethod("GET"); // 必須是get方式請(qǐng)求

???????????????? http.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

???????????????? http.setDoOutput(true);

???????????????? http.setDoInput(true);

//?????????????? System.setProperty("sun.net.client.defaultConnectTimeout", "3000");// 連接超時(shí)30秒

//?????????????? System.setProperty("sun.net.client.defaultReadTimeout", "3000"); // 讀取超時(shí)30秒

???????????????? http.connect();

???????????????? // 獲取文件轉(zhuǎn)化為byte流

???????????????? inputStream = http.getInputStream();

???????????????? size += inputStream.available();

???????????????? String tempFileName = tempResPath + "/" + fileName + (i+1) + ".amr";

???????????????? String recitFileName = tempResPath + "/" + fileName + (i+1) + ".mp3";

???????????????? if(serverIds.length == 1){

??????????????????? recitFileName = realResPath + "/" + fileName + ".mp3";

???????????????? }

???????????????? tempRecites.add(tempFileName);

???????????????? newRecites.add(recitFileName);

???????????????? byte[] data = new byte[1024 * 1024];

???????????????? int len = 0;

???????????????? fileOutputStream = new FileOutputStream(tempFileName);

???????????????? while ((len = inputStream.read(data)) != -1) {

??????????????????? fileOutputStream.write(data, 0, len);

???????????????? }

???????????????? /* 關(guān)閉流資源*/

???????????????? if(inputStream != null) inputStream.close();

???????????????? if(fileOutputStream != null) fileOutputStream.close();

???????????????? /* amr格式轉(zhuǎn)換成mp3格式*/

???????????????? File source = new File(tempFileName);

???????????????? File target = new File(recitFileName);

???????????????? AudioAttributes audio = new AudioAttributes();

???????????????? Encoder encoder = new Encoder();

???????????????? audio.setCodec("libmp3lame");

???????????????? EncodingAttributes attrs = new EncodingAttributes();

???????????????? attrs.setFormat("mp3");

???????????????? attrs.setAudioAttributes(audio);

???????????????? encoder.encode(source, target, attrs);/* 執(zhí)行轉(zhuǎn)換*/

????????????? }catch(Exception e) {

???????????????? System.err.println(e.getMessage());

????????????? }

?????????? }

?????????? System.err.println("輸入流大小:" + size);

?????????? File file = new File(realResPath + "/" + fileName + ".mp3");

?????????? if(newRecites.size() > 1){

????????????? try {

???????????????? combine(file.getPath(), newRecites);

????????????? } catch (Exception e) {

???????????????? System.err.println(e.getMessage());

????????????? }

?????????? }

?? ??????????? System.err.println("音頻大小:" + file.length()/1024 + "KB");

?? ??????????? //信息保存數(shù)據(jù)庫(kù)表

?? ??? ???? Record record = new Record();

?? ??? ???? record.set("id", ID.get());

?? ??? ???? record.set("contentname", contentName);//詩(shī)詞名稱(chēng)

?? ??? ???? record.set("contentid", contentId);//詩(shī)詞ID

?? ??? ???? record.set("fansid", fansId);//粉絲ID

?? ??? ???? record.set("path", fileStore + recitePath + "/" + contentId + "/" + fansId + "/" + fileName + ".mp3");//吟誦錄音路徑

?? ??? ???? record.set("uploaddate", new Timestamp(new java.util.Date().getTime()));//吟誦時(shí)間

?? ??? ???? api.save(getTableName(), record);

?????????? long time2 = System.currentTimeMillis();

?????????? System.out.println("上傳時(shí)間:" + (time2 - time1)/1000 + "s");

?????????? /* 刪除臨時(shí)文件*/

?????????? for(int i = 0; i < tempRecites.size(); i++){

????????????? File tempFile = new File(tempRecites.get(i));

????????????? if(tempFile.exists()){

???????????????? System.out.println("刪除AMR臨時(shí)文件結(jié)果[" + tempRecites.get(i) + ":" + tempFile.delete() + "]");

????????????? }

????????????? if(tempRecites.size() > 1){

???????????????? tempFile = new File(newRecites.get(i));

???????????????? if(tempFile.exists()){

??????????????????? System.out.println("刪除MP3臨時(shí)文件結(jié)果[" + newRecites.get(i) + ":" + tempFile.delete() + "]");

???????????????? }

????????????? }

?????????? }

?? ??????? }

????? }else{

??????? Dto.getResult().setSuccessStatus("請(qǐng)完善個(gè)人信息");

????? }

????? return Dto.getResult();

?? }

??

?? /*將多個(gè)MP3文件合并*/

?? private static boolean combine(String outFile, List<String> inFiles) throws Exception{

????? File[] files = new File[inFiles.size()];

????? for(int i = 0; i < files.length; i++){

??????? files[i] = new File(inFiles.get(i));

????? }

????? FileInputStream fis = null;

????? FileOutputStream fos = new FileOutputStream(outFile, true);//合并其實(shí)就是文件的續(xù)寫(xiě),寫(xiě)成true

????? for (int i = 0; i < files.length; i++){

??????? fis = new FileInputStream(files[i]);

??????? int len = 0;

??????? for (byte[] buf = new byte[1024 * 1024]; (len = fis.read(buf)) != -1;){

?????????? fos.write(buf, 0, len);

??????? }

??????? fis.close();

????? }

????? fos.close();

????? return true;

????? } ? /* 下載錄音接口 */ wx.downloadVoice({
serverId: '', // 需要下載的音頻的服務(wù)器端ID,由uploadVoice接口獲得
isShowProgressTips: 1, // 默認(rèn)為1,顯示進(jìn)度提示
success: function (res) {
var localId = res.localId; // 返回音頻的本地ID
}
}); /* 此下載接口只是返回微信服務(wù)器端的文件localId ,然后調(diào)用播放接口讀取localId ,但是微信服務(wù)器端的錄音文件只保留3天,請(qǐng)知曉!*/ ? ? ? ?

轉(zhuǎn)載于:https://www.cnblogs.com/hualuo-sign/p/9732719.html

總結(jié)

以上是生活随笔為你收集整理的微信公众号开发经验总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

免费又黄又爽 | 91成熟丰满女人少妇 | 国产精品免费视频一区二区 | 精品国精品自拍自在线 | 亚洲jizzjizz日本少妇 | 亚洲国产最新 | 国产手机在线观看 | 国产一级片免费观看 | 99在线免费视频观看 | 久久久久久久久毛片 | 亚洲天天在线日亚洲洲精 | 天天摸天天操天天舔 | 日韩中文字幕亚洲一区二区va在线 | 日韩精品中字 | 免费视频 三区 | 999视频在线观看 | 一级大片在线观看 | 国产精品成人aaaaa网站 | 在线日韩视频 | 日韩欧美在线免费观看 | 中文字幕a∨在线乱码免费看 | 国产成年免费视频 | 一区在线观看视频 | 国产精品视频资源 | 高清av网站 | 亚洲天堂激情 | 综合久久五月天 | 亚洲视频精品在线 | 去看片| av在线播放不卡 | 最新av在线免费观看 | 蜜臀av夜夜澡人人爽人人 | 成人三级网站在线观看 | 国产精品久久久久久久电影 | 午夜精品福利一区二区三区蜜桃 | 日产中文字幕 | 亚洲天堂精品视频在线观看 | av高清网站在线观看 | 欧美不卡在线 | 精品国产一区二区久久 | 人人插人人草 | 最近中文字幕免费观看 | 香蕉手机在线 | 最新日韩视频 | 久久玖 | 日韩在线视频免费播放 | 亚洲网站在线看 | 91av在线免费看 | 中文字幕日韩国产 | 亚洲精品美女在线观看播放 | 亚洲成人av在线播放 | 91久草视频 | 91探花在线 | 91最新在线| 午夜久久久久久久久久影院 | 91久久久久久国产精品 | 久草精品视频 | 久久久高清免费视频 | 中文字幕在线观看第三页 | 黄网站app在线观看免费视频 | 欧美成人xxx | 久久天天躁夜夜躁狠狠躁2022 | 日韩av网址在线 | 麻豆视频免费入口 | 国产成人精品999 | 一区二区三区四区不卡 | 国产视频精品免费 | 欧美性色19p | 欧美精品久久久久久久 | 久久精品国产亚洲aⅴ | 国产精品一区二区62 | 麻豆久久久久 | 毛片激情永久免费 | 午夜美女福利 | 欧美黄在线 | 亚洲日韩中文字幕在线播放 | 伊人久久av | 亚洲精品在线视频网站 | 美女视频黄在线 | 亚洲欧美日韩国产一区二区 | 亚洲午夜久久久影院 | 国产在线观看午夜 | 美国人与动物xxxx | av官网在线 | 激情婷婷丁香 | 国产精品美女久久久 | 欧美日韩99 | 日韩视频专区 | 黄色a级片在线观看 | 日韩a在线播放 | 奇米影视777四色米奇影院 | 国产精品va在线播放 | 久久成人国产精品一区二区 | 婷婷在线视频 | 国产成人黄色 | 亚洲视频观看 | 美女免费黄视频网站 | 久久久久麻豆v国产 | 中文字幕在线精品 | 久久99精品国产 | 精品久久五月天 | 精品一区二区在线观看 | 狠狠色香婷婷久久亚洲精品 | 国产v在线观看 | 久久婷婷国产色一区二区三区 | 免费看久久| 美女中文字幕 | 九九国产精品视频 | 国产精品一区二区三区四 | 久久久久久久久黄色 | 久久久亚洲影院 | 丁香婷婷激情国产高清秒播 | 最近中文字幕mv免费高清在线 | 免费看短 | 久久久五月婷婷 | 国产精品国产三级国产不产一地 | 九九热久久久 | 国产精品视频 | 伊人影院av | 国产高清视频在线 | 超碰国产在线播放 | 四虎影视成人精品 | 天天色草| 96精品高清视频在线观看软件特色 | 天天搞天天 | 国产首页 | 黄色av电影网 | 国产伦理一区二区三区 | 国产精品久久久久久久久久直播 | 成人免费观看av | www亚洲一区 | 婷婷中文字幕在线观看 | 成人黄大片 | 午夜精品久久久久久久99无限制 | 手机av电影在线观看 | 日韩av美女| 天天伊人狠狠 | 亚洲mv大片欧洲mv大片免费 | 日本中文字幕在线播放 | 亚洲mv大片欧洲mv大片免费 | 91九色蝌蚪国产 | 久久精品亚洲综合专区 | 亚洲精品国产成人av在线 | 人人讲 | 欧美日韩在线免费观看 | 国产3p视频 | 国产成人精品在线 | 久久精品99国产精品 | 久久久久久久久久国产精品 | 免费看片亚洲 | 国产精品成人av电影 | 欧美日一级片 | 91桃色国产在线播放 | 国产一级淫片在线观看 | 精品久久视频 | 99在线精品视频 | 亚洲免费成人av电影 | 免费涩涩网站 | 国产精品久久久一区二区三区网站 | 西西444www大胆高清图片 | 国产伦精品一区二区三区四区视频 | 亚洲人成在线观看 | 色婷婷亚洲 | 少妇精品久久久一区二区免费 | 成人香蕉视频 | 福利视频入口 | 久久精品黄 | 国产一区二区在线免费观看 | 国产麻豆精品久久一二三 | 婷婷色av| 最近中文字幕完整高清 | 欧美日韩国产精品一区 | 国产精品网在线观看 | 黄色www免费| 96久久欧美麻豆网站 | 久久视频在线观看中文字幕 | 丁香六月伊人 | 日韩综合视频在线观看 | 成年人在线免费看片 | www.天天射 | 在线看欧美 | 丁香六月激情婷婷 | 日韩在线看片 | 中文字幕在线看视频 | 美女免费视频一区 | www.av在线.com| 天天操天| 亚洲精品美女免费 | 91爱爱中文字幕 | 成人久久18免费网站图片 | 亚洲欧洲日韩 | 毛片激情永久免费 | 在线观看成人国产 | 91av在线电影 | 国产精品女同一区二区三区久久夜 | 插久久| 久久精品欧美视频 | 婷婷色资源| 亚洲毛片一区二区三区 | 91久久国产自产拍夜夜嗨 | 美女网站视频色 | 香蕉在线视频播放网站 | 激情久久综合 | 国产在线播放一区二区三区 | 伊人久久精品久久亚洲一区 | 91最新网址在线观看 | 国产成人综合在线观看 | 99精品国产aⅴ | 在线电影日韩 | 国产精品免费一区二区 | 在线播放视频一区 | 久久精品欧美一 | 婷婷深爱 | 亚洲精品男人天堂 | 亚洲乱码在线观看 | 综合网色| 天堂在线一区二区三区 | 婷婷成人综合 | 亚洲精品国偷拍自产在线观看蜜桃 | 99热国产在线观看 | 久久久久久久久久久久国产精品 | 69久久99精品久久久久婷婷 | 亚洲h在线播放在线观看h | 欧美aaa视频| 免费福利在线观看 | 日韩精品免费在线观看 | 最近最新中文字幕 | 国产另类xxxxhd高清 | 亚洲精品日韩一区二区电影 | 在线视频国产区 | www.伊人网.com| www看片网站| 亚洲视频 一区 | 国产操在线 | 九九热国产视频 | 国产精品一区二区三区电影 | 韩日成人av | 免费福利在线视频 | 亚洲 av网站 | 日韩精品免费专区 | 狠狠干 狠狠操 | 精品国产一区二区三区久久久 | 日本久久成人中文字幕电影 | 99亚洲视频 | 999久久a精品合区久久久 | 一级黄色片毛片 | 2021国产在线 | 国产中文字幕在线观看 | 欧美日韩成人一区 | 久久看视频 | 九九热视频在线免费观看 | 亚洲精品动漫成人3d无尽在线 | 欧美成人精品欧美一级乱 | 久久影院一区 | 国产成人av一区二区三区在线观看 | 日日精品 | 免费观看日韩av | 91精品国产91热久久久做人人 | 毛片区 | 欧美一级淫片videoshd | 日韩中文字幕a | 亚洲日韩精品欧美一区二区 | av电影在线不卡 | 亚洲欧美日本一区二区三区 | 99热在线网站| 亚洲日本va中文字幕 | 国产视频导航 | 一区二区视频欧美 | 丁香色综合| 一区二区三区四区五区在线视频 | 国产美女永久免费 | 久青草视频在线观看 | 999色视频 | a√天堂资源 | 91九色免费视频 | 国产福利久久 | 超碰免费公开 | 成人电影毛片 | 久草视频视频在线播放 | 手机看片久久 | 97超碰精品 | 日本精品久久久久中文字幕 | 超碰人人国产 | 日韩三级免费观看 | 天天曰天天爽 | 91中文字幕永久在线 | 日韩av免费在线电影 | 国产精品久久久久久久7电影 | 日韩视频二区 | 9999精品视频| 中文字幕一区在线观看视频 | 欧美不卡视频在线 | 综合网天天射 | 成人一区二区在线 | 日本中文字幕在线免费观看 | 午夜婷婷在线播放 | 国产精品亚洲片夜色在线 | 亚洲aⅴ久久精品 | 久草在线视频首页 | 777视频在线观看 | 热99久久精品 | av久久在线 | 99视频精品免费观看, | 99久久婷婷国产 | 蜜臀av麻豆| 日韩女同一区二区三区在线观看 | 久久超级碰视频 | avhd高清在线谜片 | 97免费| 欧洲一区二区在线观看 | 中文字幕精品三区 | 亚州精品天堂中文字幕 | 亚洲国产日韩欧美在线 | 成人av网站在线播放 | 天天色天天干天天 | 国产高h视频 | 毛片激情永久免费 | 伊人看片| 亚洲成人欧美 | 国产污视频在线观看 | 狠狠干婷婷色 | 99精品免费在线观看 | 日韩一级成人av | 成人黄色在线播放 | 69热国产视频 | 精品免费 | 在线观看资源 | 狠狠色丁香婷婷综合视频 | 日本视频高清 | 在线免费视频a | 91一区二区在线 | 超碰免费av | 狠狠躁夜夜a产精品视频 | 日韩av中文字幕在线免费观看 | 九九免费在线看完整版 | 天天色图 | 一级免费黄色 | 在线播放国产一区二区三区 | 久久视影 | 日韩经典一区二区三区 | 亚洲乱码国产乱码精品天美传媒 | 狠狠网| 激情丁香月| 久久激情精品 | 欧洲亚洲国产视频 | 国产精品欧美 | 国内精品视频在线 | 欧美色精品天天在线观看视频 | 日韩精品一区二区三区丰满 | 亚洲精品午夜久久久久久久久久久 | 亚洲精品久久久久999中文字幕 | 一级特黄av | 天天色天天艹 | 91久久影院 | 久操中文字幕在线观看 | 亚洲精品国产精品乱码不99热 | 日韩视频在线一区 | se视频网址 | 国产视频97| 91最新网址在线观看 | 中文在线中文资源 | 韩国av免费观看 | 色黄www小说| 国产精品免费观看久久 | 亚洲精品88欧美一区二区 | 亚洲天堂毛片 | 日本精品小视频 | 中文字幕丝袜一区二区 | www久久国产 | 成人久久久久久久久久 | 一区二区三区免费播放 | 国产精品婷婷 | 亚洲涩涩涩 | 久久久久久久久久亚洲精品 | 欧美日韩亚洲在线观看 | 99热999| 日韩精品一区二区三区在线视频 | 日日夜夜天天 | 在线观看免费视频你懂的 | 欧美另类亚洲 | 日韩视频在线播放 | 久久黄色片子 | 天天色综合天天 | 亚洲精品美女视频 | 在线黄色免费av | 片网站| 一区二区三区免费在线观看 | 色婷婷 亚洲 | 最近中文字幕高清字幕在线视频 | 亚洲精品人人 | 中文字幕高清有码 | 欧美福利网址 | 欧美a√在线 | 亚洲资源视频 | 久久99网站 | 国产污视频在线观看 | 在线日韩一区 | 99精品欧美一区二区三区 | 亚洲精品久久久久久国 | 精品欧美在线视频 | 天天色天天 | 美女免费av | 亚洲精品免费在线播放 | 久久毛片高清国产 | 婷婷综合影院 | 日日爱999| 四虎在线观看视频 | 日本精品一区二区 | 国产精品成人一区二区三区吃奶 | 欧美午夜理伦三级在线观看 | 99爱视频在线观看 | 国内精品久久久久久久97牛牛 | 亚洲日韩精品欧美一区二区 | av永久网址| 国产精品久久久久久a | 精品国产_亚洲人成在线 | 国产1区2区 | 亚洲激情综合 | 久久一区91 | 99精品国产99久久久久久97 | 久久精品影视 | 九九色视频 | 日本三级中文字幕在线观看 | 天天操天天色天天射 | 麻豆一区二区三区视频 | 一区二区视频在线看 | 久久成人资源 | 欧洲激情综合 | 精产嫩模国品一二三区 | 91日韩精品一区 | 五月天久久婷婷 | 国产午夜精品视频 | 久久精品一区二区国产 | 久草视频99 | 麻豆视频在线免费看 | 综合色婷婷| 国产精品一区二区av影院萌芽 | 国产精品99久久久久 | 超碰97在线人人 | 超碰人人草 | 四虎影视成人永久免费观看亚洲欧美 | 久久精品3 | 波多野结衣视频一区二区三区 | 最近最新中文字幕 | 久久a级片| 欧美另类成人 | 久久精品中文 | 日韩久久激情 | 超碰日韩 | 国产精品一区二区久久精品 | 蜜臀aⅴ国产精品久久久国产 | 久久五月激情 | 国产成人福利片 | 91成人精品一区在线播放 | 久久人人爽爽人人爽人人片av | 三级av中文字幕 | 91人人射 | 色婷婷丁香 | 日韩啪啪小视频 | 免费在线观看黄 | 91福利小视频 | 激情久久久 | 日本精品中文字幕在线观看 | 色婷婷 亚洲 | 精品视频久久久 | 毛片99| 国产精彩在线视频 | av网站播放| 在线观看精品 | 美女免费电影 | 国产一区二区久久久 | 夜夜婷婷| av九九九 | 99视频在线 | 国产亚洲视频在线观看 | 国产成人精品国内自产拍免费看 | 久久精品波多野结衣 | 六月丁香在线视频 | 久久久国产精品电影 | 日韩艹 | 国产亚洲情侣一区二区无 | 欧美精品一区二区三区一线天视频 | 91视频亚洲 | 久久精品看 | 免费看片网址 | 亚洲免费精品一区二区 | 好看的国产精品视频 | 一级特黄aaa大片在线观看 | 中文字幕一区二区三区四区 | 人人超在线公开视频 | 国产精品麻豆一区二区三区 | 91精品国产九九九久久久亚洲 | 精品伊人久久久 | 免费欧美高清视频 | 国产又粗又猛又色又黄视频 | 最近字幕在线观看第一季 | 亚洲成a人片在线观看中文 中文字幕在线视频第一页 狠狠色丁香婷婷综合 | 中文字幕久久精品一区 | 国产亚洲精品久久久久久网站 | 99热9| 亚洲黄网址 | 日韩欧美在线免费 | 狠狠色丁香婷婷综合久小说久 | 国产在线观看免 | 久久久久国产精品午夜一区 | 在线影院av | 中文字幕国产精品一区二区 | 天堂av在线 | 黄色网www| 在线免费观看羞羞视频 | 特级黄色视频毛片 | 国产91精品高清一区二区三区 | 亚洲最大av| 国产精品成人在线 | 免费看十八岁美女 | 亚洲精品自在在线观看 | 久久不射电影院 | 欧美日韩亚洲精品在线 | 在线观看亚洲国产精品 | 美女一级毛片视频 | 99久久999久久久精玫瑰 | 成人啊 v | 久久色网站| 色干综合 | 97超级碰碰碰碰久久久久 | 日韩伦理一区二区三区av在线 | 99视频在线观看视频 | 久久精品久久综合 | 一区二区在线电影 | 在线视频18在线视频4k | 美女网站在线观看 | 日本不卡久久 | 色九色 | 成人中文字幕在线 | 色婷婷综合成人av | 亚洲成人免费 | 久久久一本精品99久久精品66 | 亚洲一区黄色 | 91视频在线观看下载 | 久在线| 毛片无卡免费无播放器 | 91精品一区二区在线观看 | 摸bbb搡bbb搡bbbb | 国产精品日韩欧美一区二区 | 亚洲免费av片 | 日韩成人免费在线电影 | 四虎影视成人永久免费观看视频 | 国产又粗又猛又黄又爽视频 | 九色91视频 | 欧美另类性 | 中文字幕在线中文 | 日韩激情av在线 | 欧美激情另类文学 | 黄色a大片 | 久久久久久蜜桃一区二区 | 国产亚洲精品综合一区91 | 成人久久久久 | 天天摸天天操天天舔 | 色视频在线观看免费 | 国产精品2018 | 国产亚洲人成网站在线观看 | 操操色| 国产成年免费视频 | 久久精品亚洲一区二区三区观看模式 | 亚洲欧洲精品一区二区精品久久久 | 黄色三级免费网址 | 在线亚洲成人 | 在线中文视频 | 国产一区二区三区免费在线观看 | 99国产一区| 国产日韩欧美在线观看视频 | 成人av动漫在线观看 | 精品久久一区二区 | 美女视频久久黄 | 三级av在线 | 国产日本在线 | 欧美一进一出抽搐大尺度视频 | 日韩二区精品 | 91麻豆产精品久久久久久 | 久久一区二区免费视频 | 午夜免费福利视频 | www99久久| 亚洲成人资源在线 | 亚洲经典中文字幕 | 日韩免费观看一区二区 | 免费看一级特黄a大片 | 日韩激情视频在线观看 | 97免费中文视频在线观看 | 热久久免费视频精品 | 欧美精品久久99 | 99在线精品免费视频九九视 | 亚洲最新在线 | 免费观看视频的网站 | 亚洲一区二区精品视频 | 久久久久久网站 | 久久婷婷一区二区三区 | 一区二区三区 亚洲 | 日本性视频 | 久久精品99久久久久久 | 久久精品久久久久电影 | 久久免费视频5 | 99久久久精品 | 久久99亚洲精品久久久久 | 亚洲精品系列 | 亚洲欧美偷拍另类 | 福利视频一二区 | 国产一区二区电影在线观看 | 亚洲天堂网视频 | av中文字幕在线播放 | 最新在线你懂的 | 国产精品毛片一区二区 | 精品久久久免费视频 | 久久久久免费精品视频 | 免费av的网站 | 精品国产一区二区三区在线观看 | 国产精品一区二区在线免费观看 | 久久精品视频在线 | 亚洲aⅴ在线 | 精品一区二区三区久久 | 天天摸天天操天天舔 | 国产高清成人av | 最近最新中文字幕视频 | 亚洲午夜精品久久久 | 欧美日韩高清一区二区 | 天干啦夜天干天干在线线 | 久久精品国产成人精品 | 五月天激情婷婷 | 天堂久色 | 日韩经典一区二区三区 | 久保带人| 成人免费看片98欧美 | 久久这里只有精品久久 | 伊人国产在线播放 | 97电影手机 | 色资源网在线观看 | 人人射人人插 | 久草在线视频在线观看 | 国产盗摄精品一区二区 | 婷婷av综合| 久久激情电影 | 久久久免费电影 | www.天天成人国产电影 | 91热视频在线观看 | 日韩中文幕 | 国产精品第二十页 | av免费在线播放 | 久久影院一区 | 日韩中文字幕在线不卡 | se婷婷 | 欧美日性视频 | 日韩网站一区二区 | 奇米影音四色 | 2021国产精品视频 | 五月婷婷黄色 | 青草视频免费观看 | 天天射综合网站 | .国产精品成人自产拍在线观看6 | 超碰人人草人人 | 天天射色综合 | 国产黄大片 | 97成人精品视频在线播放 | 天天操天 | 九草视频在线 | 特级黄录像视频 | 中文字幕日本在线 | 91九色精品女同系列 | 在线 精品 国产 | 亚洲国产精久久久久久久 | 91在线视频网址 | 男女啪啪网站 | 一区二区三区日韩在线观看 | 国产欧美久久久精品影院 | 91精品色| 久久精品国产精品亚洲 | 国产精品一区二区在线 | 日韩特级毛片 | 一区二区三区 亚洲 | 成人91在线 | 成人免费大片黄在线播放 | 欧美ⅹxxxxxx | 日韩av不卡在线观看 | 国产视频中文字幕在线观看 | 国产这里只有精品 | 国产美女视频黄a视频免费 久久综合九色欧美综合狠狠 | 久久久18| 99国内精品久久久久久久 | 不卡的av中文字幕 | 成 人 黄 色 视频免费播放 | 欧美精品乱码99久久影院 | 欧美日韩视频 | 99色免费视频 | 日韩一区二区三区免费视频 | 四虎成人精品 | 极品美女被弄高潮视频网站 | 成人小视频在线免费观看 | 天堂在线视频中文网 | 黄色一级在线视频 | 成人小视频在线免费观看 | 久久国产精品99久久久久久老狼 | 欧美精品一区二区在线观看 | 天天草网站 | 欧美a影视 | 91久久在线观看 | 欧美日韩xxx | 青青草国产成人99久久 | 日本三级在线观看中文字 | 99久热| 国产免费人人看 | 日本深夜福利视频 | 96精品在线 | 亚洲欧美精品一区二区 | 四虎在线观看网址 | 国产精品免费看久久久8精臀av | 美女免费av | 四虎在线观看精品视频 | 国产九色视频在线观看 | 最近中文字幕大全中文字幕免费 | 国产专区视频 | av千婊在线免费观看 | 亚洲一级理论片 | 日韩综合一区二区 | 91一区啪爱嗯打偷拍欧美 | 96av麻豆蜜桃一区二区 | 亚洲 成人 一区 | 高清在线观看av | 91片黄在线观看 | 婷婷久久五月天 | 国产精品国产三级国产不产一地 | 成人手机在线视频 | 欧美精品亚洲精品日韩精品 | 正在播放国产一区二区 | 91九色蝌蚪视频 | 欧美一区二视频在线免费观看 | 日韩欧美在线观看一区 | 麻豆免费视频网站 | 国产四虎在线 | 91网页版免费观看 | 亚洲最新在线视频 | 中文国产在线观看 | 久草视频在线看 | 一区二区三区高清在线 | 国产精品久久久影视 | av高清一区二区三区 | 亚洲日韩中文字幕在线播放 | www.婷婷com| 久久综合亚洲鲁鲁五月久久 | 日韩毛片在线播放 | 久久精品视频4 | 亚洲精品国产综合久久 | 国产精品夜夜夜一区二区三区尤 | 欧美日韩中文国产一区发布 | av片一区二区 | 成人观看视频 | 色com网| 亚洲日本韩国一区二区 | 免费欧美 | 夜夜澡人模人人添人人看 | 狠狠狠狠干 | 九九久久国产 | 欧美一级久久久久 | 又黄又爽又湿又无遮挡的在线视频 | 亚洲国产大片 | 国产99亚洲 | 婷婷色吧 | 免费91麻豆精品国产自产在线观看 | 97人人爽人人 | 免费三级黄色 | 六月丁香婷 | 日韩精品不卡在线观看 | 天天爱综合 | 国产激情电影综合在线看 | 久久这里有 | 国产区精品视频 | 日韩精品专区在线影院重磅 | 91av视频观看 | 九九热中文字幕 | 国产破处在线视频 | 日日夜av| 免费黄色网址大全 | 69国产精品视频免费观看 | 日本中文字幕在线观看 | 久久综合视频网 | 日韩在线观看视频免费 | 久久精品九色 | 亚洲视频一区二区三区在线观看 | 色五月激情五月 | 国产亚洲人成网站在线观看 | 色综合天 | 日韩国产高清在线 | 亚洲女在线 | 丁香色综合 | 国产一区二区在线免费播放 | 在线观看第一页 | 韩国在线一区二区 | 激情久久伊人 | 亚洲国产偷| 欧美激情综合五月色丁香 | 日韩成人精品一区二区 | 天天射色综合 | 国产在线a视频 | 99c视频高清免费观看 | 久久人人97超碰精品888 | 99热精品视 | 亚洲高清激情 | 久久久久亚洲天堂 | 欧美精品一区二区免费 | 久久久久免费精品国产小说色大师 | 国产精品久久久久久吹潮天美传媒 | 中文字幕免费高清av | 手机av在线网站 | 国产精品久久久久一区 | 国内外成人免费在线视频 | 国产专区欧美专区 | 亚洲成人一二三 | 日韩精品大片 | 精品国产乱子伦一区二区 | 91丨九色丨国产丨porny精品 | 午夜精品久久久久 | 91色在线观看视频 | 中文字幕欧美日韩va免费视频 | 国产精品欧美在线 | 亚洲最新av网址 | 91传媒免费在线观看 | 日韩中文字幕视频在线 | 欧美日韩视频在线播放 | 国产一区二区在线免费 | 精品国产一区二区三区四区在线观看 | 九九久 | 免费男女羞羞的视频网站中文字幕 | 午夜免费福利视频 | 精品一区二区精品 | 欧美大片aaa | 三级在线视频播放 | 91天堂影院 | 久操中文字幕在线观看 | 国产日韩欧美在线观看视频 | 欧美成人影音 | 精品国产乱码久久久久久浪潮 | 免费成人在线观看视频 | 国产精品1000 | 五月婷婷六月丁香 | 免费观看av| 怡红院av久久久久久久 | 一级黄色免费网站 | 免费黄a | 色婷婷亚洲综合 | 久久好看免费视频 | 视频二区在线 | 亚洲一级久久 | 免费在线视频一区二区 | 久久99免费视频 | 久久高清免费观看 | wwwwwww色| 啪啪免费试看 | 超碰人人99 | 99视频精品在线 | 免费观看的av | 久久久久观看 | 精品在线观看一区二区 | 中文在线a∨在线 | 亚洲国产成人高清精品 | 中文十次啦 | 99热高清| 天天综合色网 | 国产色一区 | 在线免费中文字幕 | 久久免费国产精品1 | av综合 日韩 | 亚洲乱码中文字幕综合 | 97av影院| 99精品视频免费观看 | 在线观看免费色 | 国产精品人成电影在线观看 | 国产a国产a国产a | 亚洲五月综合 | 丁香av| 一区二区三区在线电影 | 日韩在线观看小视频 | 日本巨乳在线 | 日日日天天天 | 国产第页 | 男女激情麻豆 | 亚洲影视九九影院在线观看 | 久久理论电影网 | 色综合五月天 | 日韩在线国产精品 | 天天爽天天爽 | 欧美日韩国产伦理 | 亚洲欧美日韩国产精品一区午夜 | 久久午夜羞羞影院 | 中文字幕丰满人伦在线 | 日本电影久久 | 激情伊人五月天 | 国产色婷婷 | 国产韩国日本高清视频 | 天天操天天谢 | 欧美调教网站 | 日韩二区在线观看 | 麻豆视频入口 | 尤物九九久久国产精品的分类 | 久久首页 | 一区二区三区 中文字幕 | 国产麻豆精品传媒av国产下载 | 91麻豆精品久久久久久 | 日韩最新在线视频 | 黄色a在线 | 日韩在线观看视频免费 | 91麻豆国产 | a午夜电影 | 色综合久久网 | 欧美一区三区四区 | 日韩久久精品一区二区三区 | japanesexxx乱女另类| 国产精品成人自产拍在线观看 | av黄色免费在线观看 | www天天操 | 夜夜躁日日躁狠狠躁 | 日韩欧美国产成人 | 视频一区二区在线 | 国产精品视频在线观看 | 国产精品1区 | 99久久免费看 | 国产精品亚洲片夜色在线 | 日韩中文幕 | 奇米导航 | 欧美日韩高清不卡 | 日韩色在线观看 | 探花视频在线观看免费版 | 亚洲一级在线观看 | 欧美激情视频一区 | 91女人18片女毛片60分钟 | 精品久久久久久亚洲综合网站 | 欧美另类xxx| 国产亚洲精品成人av久久影院 | 国产精品99精品 | 麻豆国产精品va在线观看不卡 | 国产精品国产三级在线专区 | 久久精品国产久精国产 | www.人人草| 在线免费视频一区 | 精品在线观看一区二区 | av黄色免费网站 | 欧美极品在线播放 | 美女视频黄在线 | 精品久久久久久电影 | 在线不卡a| 在线观看www. | 亚洲黄色成人 | 人人爱爱 | 天天干天天操天天 | 久久久久国产精品免费免费搜索 | 国产又粗又硬又长又爽的视频 | 精品美女久久 | 超级碰碰碰碰 | 夜夜骑日日操 | 狠狠地日| 99超碰在线播放 | 国产精品美女久久久网av | 四虎精品成人免费网站 | 久久久电影网站 | 欧美二区在线播放 | 久草免费色站 | 亚一亚二国产专区 | 日韩大片在线 | 国产欧美综合视频 | 国产一线二线三线性视频 | 91黄色在线视频 | 免费中午字幕无吗 | 日韩天天综合 | 国产三级av在线 | 在线观看91av | 99在线精品视频在线观看 | 免费一级毛毛片 | 日韩精品第1页 | 中文字幕在线看视频国产中文版 | 精品国产91亚洲一区二区三区www | 激情五月伊人 | 玖玖国产精品视频 | 亚洲精品乱码久久久一二三 | 亚洲无毛专区 | 亚洲精品玖玖玖av在线看 | 超碰免费公开 | 久久夜夜夜 | av再线观看 | 亚洲国产精品激情在线观看 | 午夜色站 | 亚洲永久av | 在线91播放 | 久久久精品网站 | 久草在线精品观看 | 成人国产精品 | 99精品电影 | 黄色特一级 | 精品999国产| 国产破处在线视频 | 国产精品久久久久久欧美 | 色综合天天狠天天透天天伊人 | 麻豆视传媒官网免费观看 |