久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

Java后端生成微信小程序二維碼的5種實(shí)現(xiàn)方式與避坑指南

Java后端生成微信小程序二維碼的5種實(shí)現(xiàn)方式與避坑指南 簡(jiǎn)介這是一份圍繞微信小程序?qū)傺?qǐng)二維碼生成系統(tǒng)梳理多種服務(wù)端編碼思路的Java后端資源合集適合需要在小程序裂變、渠道推廣或獎(jiǎng)勵(lì)場(chǎng)景中落地二維碼能力的開(kāi)發(fā)者。資源基于微信官方getUnlimitedQRCode接口采用前端—后端API—微信API的調(diào)用鏈路專門(mén)解決長(zhǎng)期有效、數(shù)量不限的小程序碼生成問(wèn)題并一次性提供5種不同實(shí)現(xiàn)方式。壓縮包共含69個(gè)文件以Java源碼、XML配置與class編譯文件為主另有properties配置與依賴jar包可導(dǎo)入IDE直接閱讀或運(yùn)行整體體積僅53KB結(jié)構(gòu)精簡(jiǎn)便于快速對(duì)照不同方案的差異。已有2647人學(xué)習(xí)/下載適合具備基礎(chǔ)Spring/HTTP知識(shí)、希望減少接口對(duì)接試錯(cuò)成本的中級(jí)Java開(kāi)發(fā)者。通過(guò)該資源可掌握5種編碼思路、接口參數(shù)封裝及后端分層設(shè)計(jì)并拿到開(kāi)箱即用的全套工程模板。1. 生成微信小程序二維碼先繞過(guò)“找SDK”這個(gè)彎我見(jiàn)過(guò)不少后端同學(xué)接到這個(gè)需求后的第一反應(yīng)打開(kāi)搜索引擎找“微信小程序二維碼生成JDK”然后花半天調(diào)依賴、排版本沖突。其實(shí)這件事的正式做法非常輕——通過(guò)Java發(fā)起HTTP請(qǐng)求調(diào)用微信官方接口拿回圖片字節(jié)流落盤(pán)或者轉(zhuǎn)Base64交給前端。標(biāo)題里的“5種實(shí)現(xiàn)方式”本質(zhì)上是三個(gè)官方接口getUnlimited、getwxacode、createwxaqrcode和兩種落地形態(tài)文件落地、Base64直出的組合選錯(cuò)接口會(huì)踩數(shù)量上限的坑選錯(cuò)落地形態(tài)會(huì)被access_token和緩存折騰到懷疑人生。這篇文章我按真實(shí)落地順序跑一遍把參數(shù)差異和踩坑點(diǎn)寫(xiě)透適合正在做分銷(xiāo)海報(bào)、活動(dòng)碼、分享裂變場(chǎng)景的后端同學(xué)。2. 5種實(shí)現(xiàn)方式都繞不開(kāi)的三個(gè)官方接口先分清再動(dòng)手在小程序碼這個(gè)領(lǐng)域微信官方一共開(kāi)放了三個(gè)生成接口后續(xù)所有方案都是圍著它們轉(zhuǎn)。很多人翻車(chē)的起點(diǎn)就是沒(méi)搞清楚這三個(gè)接口的差異憑直覺(jué)挑了一個(gè)結(jié)果要么總數(shù)被限制要么動(dòng)態(tài)參數(shù)傳不進(jìn)去。所以這一章先把接口選型講明白再談代碼。2.1 getUnlimited / getwxacode / createwxaqrcode用一張表看懂差異這三個(gè)接口分別對(duì)應(yīng)“小程序碼(無(wú)限量)”“小程序碼(固定路徑)”“普通二維碼(固定路徑)”。別看都是生成一張圖業(yè)務(wù)上的差別非常大。接口生成類(lèi)型參數(shù)特點(diǎn)總量限制典型場(chǎng)景getUnlimitedgetwxacodeunlimit圓角小程序碼scene傳動(dòng)態(tài)參數(shù)最多32位page傳固定頁(yè)面路徑無(wú)總量限制用戶ID、訂單號(hào)、渠道標(biāo)識(shí)等動(dòng)態(tài)碼getwxacode圓角小程序碼path傳固定頁(yè)面路徑不支持scene動(dòng)態(tài)拼接總限額10萬(wàn)個(gè)固定頁(yè)面入口碼、線下物料長(zhǎng)期碼createwxaqrcode普通二維碼path傳固定頁(yè)面路徑不支持scene總限額10萬(wàn)個(gè)掃碼進(jìn)小程序的普通二維碼、印刷物料我在模擬項(xiàng)目X里第一次做分銷(xiāo)海報(bào)時(shí)選了getwxacode產(chǎn)品反饋“同一個(gè)碼掃出來(lái)都一樣”因?yàn)榉咒N(xiāo)海報(bào)每個(gè)用戶都要帶不同參數(shù)這種場(chǎng)景只能上getUnlimited。反過(guò)來(lái)如果你只需要一個(gè)固定的“小程序首頁(yè)入口碼”用getUnlimited反而沒(méi)必要——getwxacode夠用且語(yǔ)義更清晰。還有一個(gè)容易忽略的點(diǎn)createwxaqrcode生成的是普通二維碼不是圓角小程序碼微信識(shí)別沒(méi)問(wèn)題但視覺(jué)上和品牌規(guī)范往往對(duì)不上。如果產(chǎn)品對(duì)碼樣式有要求圓角、透明底、自定義顏色優(yōu)先考慮getwxacode和getUnlimited。另外getUnlimited支持auto_color和line_color自定義碼眼顏色做活動(dòng)視覺(jué)時(shí)比另外兩個(gè)接口靈活很多。2.2 access_token是第一個(gè)黑匣子緩存與刷新策略所有生成接口都要在URL上帶access_token而access_token是全局唯一的、有效期7200秒的憑證。它最大的坑在于不能每個(gè)請(qǐng)求都去獲取也不能快過(guò)期了才刷新更不能多個(gè)實(shí)例各刷各的。我見(jiàn)過(guò)一個(gè)團(tuán)隊(duì)在并發(fā)下把token刷崩了二維碼接口間歇性報(bào)41030。我一般用一個(gè)私有靜態(tài)類(lèi)統(tǒng)一管理token核心邏輯是“全局單例 過(guò)期前提前刷新”public class WxTokenHolder { private static volatile String token; private static volatile long expireAt; public static synchronized String get() { // token還在有效期內(nèi)直接返回 if (token ! null System.currentTimeMillis() expireAt) { return token; } // 過(guò)期或即將過(guò)期重新請(qǐng)求微信接口 // 請(qǐng)求 https://api.weixin.qq.com/cgi-bin/token?grant_typeclient_credentialappid你的appidsecret你的secret // 響應(yīng)體里解析 access_token 和 expires_in單位秒 String accessToken doRefresh(); // 偽代碼實(shí)際寫(xiě)HTTP請(qǐng)求 int expiresIn 7200; // 從接口響應(yīng)里取這里只做示例 token accessToken; expireAt System.currentTimeMillis() (expiresIn - 300) * 1000; // 提前5分鐘刷新 return token; } }邏輯說(shuō)明這里用volatile synchronized保證多線程下token只刷新一次提前300秒失效是為了避免邊界情況——token剛好在請(qǐng)求發(fā)出后過(guò)期導(dǎo)致接口調(diào)用失敗。實(shí)際項(xiàng)目中如果服務(wù)是多節(jié)點(diǎn)部署建議把token放到Redis里用SETNX加鎖防止多個(gè)節(jié)點(diǎn)同時(shí)刷新。參數(shù)上唯一需要關(guān)注的只有expires_in微信返回的是秒記得做單位換算。2.3 按團(tuán)隊(duì)情況選實(shí)現(xiàn)方式前面說(shuō)了5種實(shí)現(xiàn)方式本質(zhì)上不是5個(gè)接口而是“接口 × HTTP客戶端 × 落地形態(tài)”的組合。怎么選主要看你的項(xiàng)目里已經(jīng)有什么依賴。項(xiàng)目是輕量Java工程、不想引額外依賴用原生HttpURLConnection代碼少但連接不復(fù)用。老項(xiàng)目里已經(jīng)用了Apache HttpClient直接復(fù)用連接池管理成熟適合服務(wù)間調(diào)用多的場(chǎng)景。新項(xiàng)目、對(duì)并發(fā)有要求用OkHttp連接池和超時(shí)控制做得比較順手。Spring Boot項(xiàng)目用RestTemplate或WebClient和現(xiàn)有代碼風(fēng)格統(tǒng)一。全棧小團(tuán)隊(duì)、前端急著要圖用Hutool的HttpUtil一行代碼發(fā)出請(qǐng)求返回Base64給前端直接渲染。這五個(gè)方向就是下一章的5種實(shí)現(xiàn)方式。我不打算重復(fù)貼五遍一模一樣的token邏輯下面的代碼都默認(rèn)WxTokenHolder已經(jīng)就緒重點(diǎn)突出每種方式自己的差異。3. 用Java HTTP調(diào)微信接口5種實(shí)現(xiàn)方式與完整代碼進(jìn)入正題。先說(shuō)統(tǒng)一的前提所有請(qǐng)求都是POSTContent-Type為application/json請(qǐng)求體是JSON字符串成功時(shí)返回圖片字節(jié)流PNG失敗時(shí)返回JSON錯(cuò)誤體通常errcodeerrmsg。3.1 方式一原生HttpURLConnection getUnlimited零依賴也能跑通最適合臨時(shí)腳本、工具類(lèi)或不想引入任何依賴的后端模塊。直接看代碼public class WxQrCodeService { public byte[] createDynamicCode(String scene, String page, int width) throws IOException { String token WxTokenHolder.get(); // 動(dòng)態(tài)小程序碼接口scene傳業(yè)務(wù)參數(shù)page傳固定頁(yè)面路徑 String url https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token token; URL httpUrl new URL(url); HttpURLConnection conn (HttpURLConnection) httpUrl.openConnection(); conn.setRequestMethod(POST); conn.setDoOutput(true); conn.setConnectTimeout(5000); conn.setReadTimeout(5000); conn.setRequestProperty(Content-Type, application/json; charsetutf-8); // 構(gòu)造請(qǐng)求體注意scene最多32位page必須從pages/開(kāi)頭 JSONObject param new JSONObject(); param.put(scene, scene); param.put(page, page); param.put(width, width); param.put(check_path, false); param.put(env_version, release); try (OutputStream os conn.getOutputStream()) { os.write(param.toJSONString().getBytes(StandardCharsets.UTF_8)); os.flush(); } // 微信接口即使業(yè)務(wù)失敗HTTP狀態(tài)碼也可能返回200所以必須讀body判斷 byte[] body; try (InputStream in conn.getInputStream()) { body in.readAllBytes(); } // 返回體以{開(kāi)頭說(shuō)明是錯(cuò)誤JSON不能當(dāng)圖片使用 if (body.length 0 body[0] {) { throw new RuntimeException(微信接口報(bào)錯(cuò): new String(body, StandardCharsets.UTF_8)); } return body; } }邏輯說(shuō)明getUnlimited的scene是動(dòng)態(tài)參數(shù)的唯一入口業(yè)務(wù)側(cè)最常用的是用戶ID、訂單號(hào)這類(lèi)短標(biāo)識(shí)page固定到小程序頁(yè)面路徑。readAllBytes()在Java 9可用如果你還在Java 8自己循環(huán)讀流即可。幾個(gè)參數(shù)說(shuō)明width控制碼的邊長(zhǎng)范圍280到1280不是越大越清晰一般用430或默認(rèn)值check_path在本地開(kāi)發(fā)環(huán)境必須傳false否則接口會(huì)因?yàn)轫?yè)面未發(fā)布而報(bào)錯(cuò)env_version有三個(gè)取值release、trial、develop開(kāi)發(fā)環(huán)境想測(cè)線上邏輯時(shí)用trial。接口響應(yīng)是PNG字節(jié)流不用做任何解碼直接落盤(pán)或轉(zhuǎn)Base64都行。3.2 方式二Apache HttpClient getwxacode適合已有HttpClient的項(xiàng)目老項(xiàng)目里如果已經(jīng)用了HttpClient沒(méi)必要再引一套新依賴。getwxacode的特點(diǎn)是參數(shù)里直接傳path適合固定頁(yè)面入口碼public byte[] createFixedCode(String path, int width) throws Exception { String token WxTokenHolder.get(); CloseableHttpClient client HttpClients.createDefault(); HttpPost httpPost new HttpPost( https://api.weixin.qq.com/wxa/getwxacode?access_token token); httpPost.setHeader(Content-Type, application/json;charsetUTF-8); JSONObject param new JSONObject(); param.put(path, path); // 固定頁(yè)面路徑如 pages/index/index param.put(width, width); // 碼寬度 param.put(check_path, false); // 本地聯(lián)調(diào)必須置false httpPost.setEntity(new StringEntity(param.toJSONString(), UTF-8)); try (CloseableHttpResponse response client.execute(httpPost)) { byte[] body EntityUtils.toByteArray(response.getEntity()); // 同樣要先判斷是不是錯(cuò)誤JSON if (body.length 0 body[0] {) { throw new RuntimeException(微信接口報(bào)錯(cuò): new String(body, StandardCharsets.UTF_8)); } return body; } }邏輯說(shuō)明getwxacode和getUnlimited最大的區(qū)別是——getwxacode不帶scene參數(shù)path就是整個(gè)碼的內(nèi)容。這意味著同一個(gè)頁(yè)面同一個(gè)path生成的碼永遠(yuǎn)一樣想?yún)^(qū)分用戶?做不到它天生就不是干這個(gè)的。參數(shù)上getwxacode還支持auto_color和line_color用于定制碼的顏色。auto_color傳true時(shí)line_color失效系統(tǒng)自動(dòng)取頁(yè)面主色想完全自定義就傳auto_colorfalse以及RGB的line_color。實(shí)際做品牌物料時(shí)這個(gè)參數(shù)比標(biāo)準(zhǔn)黑碼好看不少。另一個(gè)提醒getwxacode有總數(shù)10萬(wàn)個(gè)的限制長(zhǎng)期項(xiàng)目建議做個(gè)計(jì)數(shù)器提前評(píng)估消耗速度別等碼用完了才發(fā)現(xiàn)。3.3 方式三OkHttp createwxaqrcode連接池復(fù)用適合高并發(fā)如果你的服務(wù)并發(fā)量不低OkHttp是比HttpURLConnection更穩(wěn)的選擇。連接池復(fù)用、超時(shí)更精細(xì)、響應(yīng)流處理也更安全。這里生成的是普通二維碼場(chǎng)景是線下掃碼引流public String createQrBase64(String path, int width) throws IOException { String token WxTokenHolder.get(); OkHttpClient client new OkHttpClient.Builder() .connectTimeout(5, TimeUnit.SECONDS) .readTimeout(5, TimeUnit.SECONDS) .build(); JSONObject param new JSONObject(); param.put(path, path); param.put(width, width); RequestBody requestBody RequestBody.create( MediaType.parse(application/json; charsetutf-8), param.toJSONString()); Request request new Request.Builder() .url(https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token token) .post(requestBody) .build(); try (Response response client.newCall(request).execute()) { byte[] bytes response.body().bytes(); if (bytes.length 0 bytes[0] {) { throw new RuntimeException(微信接口報(bào)錯(cuò): new String(bytes, StandardCharsets.UTF_8)); } return Base64.getEncoder().encodeToString(bytes); } }邏輯說(shuō)明createwxaqrcode生成的是普通二維碼形狀不是圓角小程序碼。如果你的頁(yè)面里需要展示二維碼圖片Base64字符串可以直接放到img標(biāo)簽的src里省掉文件上傳和URL生成的環(huán)節(jié)。這里有一個(gè)容易忽略的點(diǎn)OkHttp的response.body().bytes()只能調(diào)用一次調(diào)用后流就關(guān)閉了。別先轉(zhuǎn)成字符串再轉(zhuǎn)byte[]那樣會(huì)把二進(jìn)制圖片弄壞。我見(jiàn)過(guò)同事在這里翻車(chē)——用response.body().string()去拿圖片結(jié)果全是亂碼。正確做法是直接取bytes后續(xù)要Base64再編碼。3.4 方式四RestTemplate getUnlimited 文件落盤(pán)Spring項(xiàng)目順手做法Spring項(xiàng)目里最常見(jiàn)的做法是直接用RestTemplate把小程序碼存到服務(wù)器本地或?qū)ο蟠鎯?chǔ)返回一個(gè)可訪問(wèn)的URL給前端。下面這段是生成后落盤(pán)的完整邏輯public String saveQrToFile(String scene, String page, String fileName) throws IOException { String token WxTokenHolder.get(); String url https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token token; HttpHeaders headers new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); JSONObject param new JSONObject(); param.put(scene, scene); param.put(page, page); param.put(width, 430); param.put(check_path, false); HttpEntityString entity new HttpEntity(param.toJSONString(), headers); // 關(guān)鍵用byte[]接收響應(yīng)強(qiáng)制把圖片流當(dāng)二進(jìn)制處理 ResponseEntitybyte[] resp restTemplate.exchange( url, HttpMethod.POST, entity, byte[].class); if (resp.getStatusCode() ! HttpStatus.OK) { throw new IOException(HTTP狀態(tài)碼異常: resp.getStatusCode()); } byte[] body resp.getBody(); if (body null || body.length 0) { throw new IOException(二維碼圖片為空); } Files.write(Paths.get(fileName), body); return fileName; }邏輯說(shuō)明RestTemplate接收?qǐng)D片流時(shí)必須用byte[]類(lèi)型作為響應(yīng)泛型如果誤用了String類(lèi)型框架會(huì)按文本解碼圖片直接被轉(zhuǎn)成亂碼字符串。這也是為什么exchange比getForObject穩(wěn)。落盤(pán)之后一般配合Nginx或?qū)ο蟠鎯?chǔ)把文件映射成URL。需要注意文件名的設(shè)計(jì)——如果用scene作為文件名的一部分要確保scene本身不含特殊字符否則URL解析會(huì)有問(wèn)題。我習(xí)慣用“業(yè)務(wù)類(lèi)型 日期 UUID片段”來(lái)命名避免文件名沖突也方便排查。3.5 方式五Hutool HttpUtil getUnlimited Base64輸出小團(tuán)隊(duì)全棧最快路徑當(dāng)你不想寫(xiě)連接池、不想寫(xiě)資源關(guān)閉、就想快點(diǎn)把圖給到前端時(shí)Hutool絕對(duì)是我現(xiàn)在最常用的選擇。代碼縮短到極致public String createWxCodeBase64(String scene, String page) { String token WxTokenHolder.get(); String url https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token token; JSONObject param new JSONObject(); param.put(scene, scene); param.put(page, page); param.put(width, 430); param.put(check_path, false); param.put(env_version, release); // 一行代碼發(fā)起POST并拿回字節(jié)流 byte[] body HttpUtil.createPost(url) .body(param.toJSONString()) .execute() .bodyBytes(); if (body.length 0 body[0] {) { throw new RuntimeException(微信接口報(bào)錯(cuò): new String(body, StandardCharsets.UTF_8)); } // data:image/png;base64 是前端img可以直接渲染的格式 return data:image/png;base64, Base64.getEncoder().encodeToString(body); }邏輯說(shuō)明Hutool的HttpUtil簡(jiǎn)化了HTTP客戶端的使用但本質(zhì)上它還是走HTTP POST響應(yīng)處理邏輯和前面幾種方式一致。bodyBytes()拿到的就是原始字節(jié)流不用關(guān)心連接池關(guān)閉。這種Base64直出方式很適合“前端彈窗實(shí)時(shí)展示分享海報(bào)”的場(chǎng)景——后端不落盤(pán)、不產(chǎn)生臨時(shí)文件、不占用存儲(chǔ)每次請(qǐng)求實(shí)時(shí)生成。要注意的是Base64字符串比原圖大約增加33%的體積430px的小程序碼轉(zhuǎn)Base64通常也就幾KB對(duì)接口響應(yīng)影響不大。如果圖片尺寸很大建議還是落盤(pán)走CDN別用Base64傳輸。方式五是我在模擬項(xiàng)目X里給前端做分享圖功能時(shí)的最終方案聯(lián)調(diào)效率比前幾種高出一截。4. 生成小程序二維碼避坑5個(gè)翻了車(chē)才記住的坑代碼能跑通只是第一步真正折磨人的是各種隱蔽邊界。下面這5個(gè)坑我都在不同項(xiàng)目里踩過(guò)每個(gè)都是真實(shí)線上的事故不是網(wǎng)上復(fù)制來(lái)的。4.1 path填成完整URL掃碼出來(lái)一片空白現(xiàn)象碼生成成功后用戶掃出來(lái)頁(yè)面打不開(kāi)小程序直接報(bào)“頁(yè)面不存在”或白屏。原因你以為path是“https://xxx.com/pages/index/index”就原樣傳給了微信接口。但小程序碼里的path字段要求的是小程序內(nèi)部頁(yè)面路徑必須從pages/開(kāi)始完整的URL是非法值。解決把path規(guī)范成“pages/index/index”這種格式不要帶域名、不要帶http協(xié)議前綴。聯(lián)調(diào)時(shí)打開(kāi)微信開(kāi)發(fā)者工具的Console看具體報(bào)錯(cuò)它會(huì)直接告訴你“page not found”。4.2 access_token被多實(shí)例刷崩接口間歇性報(bào)41030現(xiàn)象二維碼服務(wù)運(yùn)行一段時(shí)間后接口開(kāi)始隨機(jī)報(bào)41030(invalid access_token)重啟后又恢復(fù)。原因多節(jié)點(diǎn)部署時(shí)每個(gè)節(jié)點(diǎn)各自持有token節(jié)點(diǎn)A刷新后節(jié)點(diǎn)B還在用舊token發(fā)起請(qǐng)求微信端舊token被新token頂?shù)鬊自然全部失效。解決token統(tǒng)一放到Redis里所有節(jié)點(diǎn)走同一個(gè)緩存刷新時(shí)用Redis的SETNX做鎖搶到鎖的節(jié)點(diǎn)才允許請(qǐng)求token接口。緩存過(guò)期時(shí)間不要設(shè)滿7200秒留300秒余量避免邊界過(guò)期。提示access_token本身的獲取頻率也有限制官方文檔明確建議全局緩存。服務(wù)端每次生成碼之前都先走WxTokenHolder或Redis不要重復(fù)獲取。4.3 scene參數(shù)超長(zhǎng)或帶特殊字符接口直接報(bào)錯(cuò)現(xiàn)象scene參數(shù)拼接了“用戶ID_時(shí)間戳_渠道標(biāo)識(shí)”結(jié)果接口返回40097或參數(shù)不合法。原因scene最多32位且只支持?jǐn)?shù)字、大小寫(xiě)英文、下劃線等一部分字符。超長(zhǎng)或被URL編碼后改變語(yǔ)義都會(huì)校驗(yàn)失敗。解決不要在scene里塞原始業(yè)務(wù)主鍵和長(zhǎng)字符串。常見(jiàn)做法是生成一個(gè)短碼存到Redis或數(shù)據(jù)庫(kù)把映射關(guān)系存好scene只存短碼用戶掃碼后通過(guò)短碼反查真正的業(yè)務(wù)參數(shù)。這個(gè)設(shè)計(jì)還能附帶一個(gè)好處——短碼天然適合做冷熱數(shù)據(jù)分析和埋點(diǎn)。4.4 check_pathtrue導(dǎo)致本地開(kāi)發(fā)環(huán)境生成失敗現(xiàn)象本地聯(lián)調(diào)時(shí)調(diào)用getUnlimited接口一直報(bào)“path路徑不合法”。原因check_pathtrue要求小程序頁(yè)面必須先上傳到微信后臺(tái)本地開(kāi)發(fā)環(huán)境下的頁(yè)面路徑根本不在微信的版本體系里自然校驗(yàn)失敗。解決開(kāi)發(fā)環(huán)境check_path傳false發(fā)布到線上前再改成true。如果你用env_versiondevelop配合check_pathfalse可以在開(kāi)發(fā)版小程序里正常打開(kāi)頁(yè)面進(jìn)行調(diào)試。這個(gè)參數(shù)在測(cè)試環(huán)境最容易漏改建議做成配置項(xiàng)不同環(huán)境不同取值。4.5 HTTP狀態(tài)碼是200body卻是一段JSON錯(cuò)誤現(xiàn)象圖片下載下來(lái)是0字節(jié)或者文件打不開(kāi)但HTTP狀態(tài)碼明明是200。原因微信生成接口的特點(diǎn)是——業(yè)務(wù)失敗時(shí)HTTP狀態(tài)碼依然返回200錯(cuò)誤信息放在body的JSON里。代碼里只要看到前面有if (code ! 200)就以為成功了然后把JSON錯(cuò)誤文本當(dāng)成圖片寫(xiě)入文件。解決所有實(shí)現(xiàn)方式里都要加“body開(kāi)頭是否為{”的判斷是則按錯(cuò)誤處理。這個(gè)判斷比HTTP狀態(tài)碼更可靠。我在上面五種方式的代碼里都加了這段復(fù)制到生產(chǎn)環(huán)境時(shí)千萬(wàn)別刪。5. 從“能出圖”到“能上線”二維碼生成的驗(yàn)證清單代碼寫(xiě)完了接口也調(diào)通了最后一步是驗(yàn)證。很多項(xiàng)目死在“本地能生成一張碼”和“線上穩(wěn)定生成百萬(wàn)張碼”之間的空檔。我給自己定了一套驗(yàn)證清單每次新接生成碼需求都按這個(gè)走。驗(yàn)證第一件事是文件頭。PNG圖片的前8個(gè)字節(jié)是固定標(biāo)識(shí)0x89 0x50 0x4E 0x47。批量生成的二維碼可以做一個(gè)自動(dòng)化斷言// 回歸腳本片段驗(yàn)證接口返回的確實(shí)是PNG圖片 byte[] bytes wxQrCodeService.createDynamicCode(u_10001, pages/index/index, 430); assertTrue(bytes.length 0); // PNG魔數(shù)檢查能攔下把JSON錯(cuò)誤當(dāng)圖片寫(xiě)入的翻車(chē)場(chǎng)景 assertTrue((bytes[0] 0xFF) 0x89); assertTrue((bytes[1] 0xFF) 0x50); assertTrue((bytes[2] 0xFF) 0x4E); assertTrue((bytes[3] 0xFF) 0x47);第二件事是參數(shù)邊界回歸批量化地去生成scene超長(zhǎng)、scene特殊字符、path不存在、check_path開(kāi)關(guān)切換、env_version三種取值、width極端值280和1280。不要只測(cè)正常鏈路這五個(gè)邊界能覆蓋我上面踩過(guò)的80%的坑。第三件事是真機(jī)掃碼驗(yàn)證。后端生成了碼不代表前端能正常跳轉(zhuǎn)。找兩臺(tái)不同系統(tǒng)的手機(jī)一臺(tái)掃碼進(jìn)正式版一臺(tái)掃碼進(jìn)開(kāi)發(fā)版確認(rèn)真實(shí)業(yè)務(wù)參數(shù)傳過(guò)去了。我遇到過(guò)一種情況碼生成了頁(yè)面也打開(kāi)了但scene里的下劃線在URL解析時(shí)被吃掉業(yè)務(wù)參數(shù)少了一位。這種問(wèn)題只有真機(jī)掃碼才能暴露。最后說(shuō)個(gè)習(xí)慣我會(huì)在代碼里給每個(gè)生成方法寫(xiě)一個(gè)簡(jiǎn)潔的日志包含接口名、scene、page、寬度、耗時(shí)、返回大小。上線后通過(guò)日志統(tǒng)計(jì)消耗速度——尤其是getwxacode和createwxaqrcode這類(lèi)有10萬(wàn)總量限制的接口提前預(yù)估用量比到時(shí)候被限制再補(bǔ)救舒服得多。我第一次做這個(gè)功能的時(shí)候就是沒(méi)做總量監(jiān)控活動(dòng)上線第三天碼就用完了整個(gè)團(tuán)隊(duì)手忙腳亂。后來(lái)每次做二維碼相關(guān)需求我第一件事就是確認(rèn)用的哪個(gè)接口、有沒(méi)有總量限制、日志有沒(méi)有記錄調(diào)用量。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
在线一区| 狠狠色色| av日韩中文字幕| 黄网在线播放| 亚洲国产奇米影视久久| 久久9久| 久久宗合亚洲| 伊人青青草久久| 麻豆国产尤物AV| 亚洲中文字幕久久人妻| 天天躁日日躁成人字幕aⅴ| 九九精品网| 自拍亚洲综合| 亚洲性猛| 91国产美女丝袜足交精品视频| 大香蕉五月天| 日韩在线观看字幕精品| 日韩美女啪啪一区| 国产精品麻豆成人av| 欧美天天综合站| 人妻社区男人天堂| yazhousetuoumei| 国产欧美伊人| 7月婷婷综合| 色爱国产| 91亚洲黑人| 立川理惠加勒比无码| 欧美强奸乱能| 草草网站影院白丝内射| 岛国免费黄色网址| 日韩av不卡在线看| 91在线视频免费播放| A片A5445444| 黄片www视频免费| 亚洲国产97| 九九AV| 一本色道综合久久欧美日韩精品| 91天美免费| 哈哈操电影| 精品久久久久成人码免| 日韩熟女无码| AA丁香综合激情| 91精品久久久久久77777| 亚洲综合成人网| 99熟女| 久久免费老司机精品| A V少妇特黄三级| 99久久婷婷国产综合精品草原| 免費黃色視頻觀看一| 9 9无尺码天堂网| 天天操天天7| 天天综合欧美黑人| 国产在线视频午夜精华在| 青娱乐国产剧情av一区| 午夜无遮挡男女啪啪视频| 免费看黄视频亚洲网站| 国产一区二区三区导航| 美女91在线观看| 欧美 日韩 另类 亚洲| 青青草久久| 97中文热色| 国产激情视频一区区三区| 亚洲欧美另类激情小说| 蜜乳av一区二区| 多乙久久久久久| 狠狠五月天| 日本不卡三级网在线播放| 97中文字幕色| 情色大香蕉| 日韩亚洲欧美中文字幕| 日韩 欧美 另类 人妻| 8050午夜少妇无码| 97亚洲资源| 中国熟妇| 无码人妻丰满热妇又大又粗| 射 色综合| 最新中文字幕av| 五月天人妻综合| 久久久999| 国产在线视视频有精品| 欧美第二页午夜| 最新日本中文字幕| 日日碰狠狠添天天爽超| 久欲AV| 精品九九| 日本九九九九| 色男人色天堂东京热| 亚洲黄色AV电影| 欧美日韩不卡a片| 五月天综合| 久久精品99| 国产成人超碰在线| 91人妻丝袜无码| 亚洲日韩资源| 99自拍视频| AV色五月天| 超碰97久久| 激情五月丁香五月| 久久久久九九九九九| 久久亚州精品成人Av无| 欧美色图片91| 亚洲精品97| 久久香蕉影院| 亚洲一区二区中文字幕| 8050午夜少妇无码| 好爽要喷了| 精品偷拍13p欧美dodk视频| 欧美性猛交美女自慰91| 精品97久久| 人妻aa| 综合网97| 激情丁香婷婷| 中文字幕第7页| 大香蕉丝袜一级片| 农村少妇久久久久久久| 国产精品色色| av影片在线观看不卡| 久久,精品一二三| 亚洲黄色电影| 色欧美天天| 亚洲 欧美综合| 狠狠干,狠狠操| 欧美性五月| 久久AV无码网址| 大干人妻| 婷婷在线播放| 少妇久久久久久| 欧美日韩m| 自拍偷拍第26| 97天天插| 婷婷综合网| 四虎AV在线播放| 97色婷婷| 国产隔壁老王影院在线| 中文欧丝袜诱惑| 欧洲一级性爱视频在线观看| 亚洲人妻日日日| 亚洲AV无码天美传媒一区| 欧美天天弄| 久久e6只有精品| 狠狠中文字幕| 一二三区精品视频| 干b在线性社区| 人人干黄色| 美女91色黄18| 少妇 综合| 大JI巴好深好爽又大又粗视频| 韩国女主播青草在线| 色成人Www精品永久观看| 欧美日韩中国x| 日本狠狠干| 色综合国产在线观看| 骚女高跟AV在线| 亚洲超碰在线| 人人弄人人摸| 国内一级精品| 国产福利夜| 91精品人妻电影| 91天天综合日韩欧美| 日本精品免费一区二区三区四区| 日韩性爱高清免费视频| 中文字幕美女91| 成人av在线播放| 激情婷婷丁香网| 99re6久热只有精品6在线直播 | 可以在线观看的黄色网址| 玖色av| 人妻日日夜夜精品| 久久久久久久人妻| 夜间福利片1000无码| 91高潮| 色色综合97| 色色色999| 欧美的性爱网站免费| 欧美热图99| 婷婷五月天无码| 91精品电影18| 婷婷丁香成人| 亚洲美女自拍偷拍视频| Sekablack无码一区| 夜夜夜爽www精品视频| 国产精品视频| 天天日天天舔东京热| 91九色精品熟女内射| 人人看人人插| 日韩字幕一区| 精品亚洲| 淫荡网址| 青娱乐国产剧情av一区| 久久六六| 狠日欧美| 人人操人人肉久久精品| 国产精品97超碰| 天美传媒在线一区| 欧美激情欧美精品| 91九色丨国产丨爆乳| 日韩久久三区| 日韩欧美亚洲国产日韩| 992这里有精品| 国产成人免费观看在线视频| 黄色av网站在线播放| 粉嫩av在线| 我想要 啊 啊 啊| 猛猛干| 91精品人妻一品二品三品| 亚洲第一男人天堂| 日韩精品人妻一区二区| 97网色| 9I1性色影院| 九九九九九九九九九国产精品| 九七超碰人人乐| 久9爱精品| 亚洲Av诱惑| 亚洲欧美97| 舔足天天操天天射| **一级毛片国产| 国产精品免费视频人成| 一区二区三区四区色图| 大香蕉 222| 亚洲男人的天堂AV| 大香蕉之青青草原| 天天综合91入口| 花花AV导航| 久久久久久久强迫| 中文字幕精品一区欧美| 国产懂色精品国产av| 精品成人av一区二区三区在线| 肉嘟嘟www视频在线观看高清| 手机看av网站在线看| 欧美很很操视频| 国产亚洲在线观看| 欧美日韩电影一区二区| 亚洲日本天堂| 日韩欧美传媒一区国产| 欧美偷拍区| 亚洲色图欧美视频| 天天欧美色| 精品人妻一区二区三区夜夜| 蜜桃午夜视频一区二区 | 亚洲亚洲亚洲天堂天堂 | 欧美嫩性色| 久久人妻四季| 综合欧美色图| 亚洲AV无码乱码| 日韩,欧美,中文在线| 婷婷在线视频| oumeizonghese,www| 男人天堂毛片| 国产精品久久久久无码A√| 日韩中文字幕视频在线观看| 啊啊啊在线观看免费视频| 亚洲欲| 中文乱码字幕观看视频| 日逼视频日本| 刺激精品视频| 色网站导航大全| 熟女视频久久| 97精品综合久久网| 呦呦一区| 色色色综合网| 日本性一区| 日韩成人私密一级精品av| 白嫩国模丰满一二三区| 美女淫穴| 久久精品熟女亚洲AV麻豆软件| 最新的亚洲无吗| 97免费在线视频在线观看| 蜜桃狠狠色伊人亚洲综合| 美女黄网| 熟女丰满人妻一区| 网友自拍第一页| 狠狠色综合网| 久久久免费高清中文视频| 欧美爱三级日韩久久| 久久99网站| 国产久久一区二区| 国产乱伦性爱区| 五月丁香啪啪啪| 天天爽入口| 密乳AV免费观看| 人人澡人人爽人人精品| 欧美性性性| 无码自拍SM| 999熟女精品| 精品国产一区二区三区香蕉欧美| 99在线观看无大码| 又大又长又粗又爽又黄| 久久久久密臀一区二区| 人人艹亚洲| 99久久综合| 国产亚洲精品无码三区| 男人天堂免费| 无码日韩网站| 黄色成年| 嗯啊不要啊在线 | 99久国产精品午夜性色福利| 欧美少妇第一页| 翔田千里A片一区二区| www鬼畜国产男人的天堂| 亚洲精品久久久久久久蜜桃臀| 亚洲av乱伦色图网站| 我想要啊 啊 啊| 综合久| 猛猛干| 日韩欧亚太美不卡| 久久中文字幕一区不卡| 大香蕉色欲AV| 亚洲欧洲偷拍一区| 国产精品人妻无码久久久老鸭窝 | 国产精品ww久久| 看黑丝美女操逼青青网站| 九九视频黄色片| 99色骚| 操逼视频亚洲| 人妻熟女一区二区在线视频| 殴美牲| 成年人网站在线免费观看| 玖玖综合色| 成人a大片在线观看| 蜜臀久久99'精品久久久| 久操婷婷| 日韩色欲久久一二三四区| 劲爆欧美人妖三区91| 九九热在线精品视频| 亚洲伊人久久综合97| 国产美女激情| 玖玖婷婷五月天| 亚洲欧美日韩二区视频| 男人久久天堂| 极品人妻少妇综合| 九久9精品| 东北女人高潮视频| 好爽,再快点啊哈嗯嗯嗯嗯| 久久中文字幕一区不卡| 国产乱码久久久| 国产精品青青草| 乱伦av麻豆| 欧美色图91| 亚拍在线| 久久免费老司机精品| 6080YYY午夜理论片在线观看| 久久久熟女一区| 99999无码| 强奸乱伦动态污图免费 | av草草在线电影| 欧美熟妇视频| 欧美视频中文字幕区| 12一15性XXXX粉嫩国产| 91热| 91色堂| 97色在线观看| 色婷婷影院| 男人高清无码一区二区| 精品人妻一区二区三区四区石在线| 久久久精| 91女优在线观看| 日韩人妻网站| 97久精品| 亚洲,欧美,春色,另类| 日韩欧美一级特黄大片| 国产亚洲性生活视频播放| 亚洲人妻久久| 超碰久超碰久| 蜜臀va69| 亚洲久久东京热一二三四五区视频| 四虎AV无码| 天美传媒av 在线| 国产又操| 欧美日韩国产色图在线| 亚洲AV秘 精品久久老牛影视| 亚洲欧美一区二区网址| 欧美国产精品久久九九| 欧美日本成人一区二区| 欧美狠狠干| 蜜臀视频网站| 极品色| 亚洲av青草久久一区二区| 欧中美三级一区二区三区| 九九九九九九九| 足交视频老司机| 婷婷香网站| 亚洲天天影视综合网| 色盈盈影院| 欧美色图片91| 欧美熟妇人体| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 亚洲欧洲日韩天堂av| 操逼无码操逼| 青青免费在线视频一区| 天天做日日做天天欢。| 亚洲蜜桃V妇女| 久久久精品成人国产| 婷婷深爱五月| 一本道综合色图| 亚洲 图片 综合91| 色眯眯射| 亚欧美综合网。| 人乳av| 综合亚洲欧美| 伊人国产成人av网站| 免费中文综合精品| 思思性爱| 亚洲不卡AV在线| 天天享受天天看| 嗯~啊~快点 死我视频免费看网站| 激情五月天校园春色网| 天天夜夜rb| 国产深夜福利| 密乳无码| 人妻熟女字幕一区二区| AV丝袜少妇| 人妻天天爽夜夜爽2| 青青在线视频免费| 亚洲伊人久久综合97| 2019天天干天天操| 中文高清一区二区的| 校园春色综合色| 中文字幕久久亚州无码| 色香综合| 久操不卡视频| 一区中文字幕二区日韩| 日日夜夜骑| 亚洲av国产av综合av卡| 91精品黄在线观看| 女生自91网站| 久久尹人大香焦视| 91成人久久| 日韩在线视频1234| 欧美,亚洲,日韩,v,天堂,手机在线观看| 超碰超碰超碰超碰的大鸡吧操黑丝袜| 日韩字幕一区| 伊人久久88国产女| 十八禁电影伊人网| 26uuu国产亚洲综合| 强奸xx国产| 久久大陆| 日韩欧洲操屄视频| 久久久久久午夜男人的天堂| 欧美一区二区三区成人性生活| 中文字幕99999| 伊人久久大香大香线蕉中文| 色www精品视频在线观看| 91w欧美| 日本一级性爱| 超碰午夜| 国产区91柔拿会所技师| 日本一片一区| A 天堂| 激情文学网伊人| 亚洲高清男人天堂| 男人高清无码一区二区| 久久一二三四不卡 | 黄片视频观看| 麻豆天美久久91| 国产麻豆91欧美一区二区久久婷婷国产精品| 精品无码欧美三级| 后X久久| 久久香蕉国产线看观看亚洲女人 | 在线洲亚线| 91强热人妻| 欧美91精彩| 国产精品一区av在线| 国产天天骚| 男人天堂电影院| 艹我哪美一区无码| 天天综合网日韩| 天天色粽合合合合合合合| 婷婷性网| 超碰人人妻| 精品午夜福利| 久久本道| 在线看的av| 日韩中文字幕av在线播放| 精品日韩人妻视频| 亚热日本熟女| 97欧美性爱| 韩国嫰模上门援交视频| 天天色播亚洲综合网站| 欧美一区二区| 欧美三级一级| 大香焦A片| 伊人96在线| 色婷五月| 日韩欧无码一区二区三区免费不卡| 超碰激情808| WWW啪啪的com| 风月影院男女十八禁| 婷婷中文网| 青青在线视频免费| 欧美中文字幕一区| 色成人Www精品永久观看| 欧美另类天堂| 亚洲综合春色| 亚洲成人无码影院| 极品色综合| 澳门人妻久久| 国产日韩在线播放| 国产剧情在线| av72网| 国产99热| 日本色色视频网站| 亚洲在线综合| 国产超碰在线一区| 91色色色| 国产一区二区三区久久久精品| 国产精品乱码久久久久久久| 国产欧美美女免费观看视频| 上海一级黄片| 国产熟妇 码视频户外直播| 中文字幕97色| 99色在线| 亚洲中文国际强奸字幕| 久久久蜜桃臀无码视频| 91久久国外网| 91久久午夜无码鲁丝片久久人妻| 久久久久亚洲Aⅴ无码| 亚洲国产97| 丝袜狂射91| 日本亚洲vr欧美不卡高清专区| 国产福利在线视频网站| 亚洲色天| 99色热| 久久99精品九九久久久婷婷| 亚洲国产欧美日韩人妻日中文| 强奸乱伦AV网站| 天天插网| 精品一级| 91大香蕉伊人| 人妻激情在线视频| 中出789在线视频| 欧美第一页性| 99精品网| 久久婷婷精品| 黄色一级视| 影视综合无码少妇| 国产日韩精品suv| 亚洲熟女综合一区二区| 久草成人影片| yazhouzaixian| 色香伊人| 加勒比五月天| 国产十八禁视频| 日韩精品人妻中文字幕有码午| 丁香五月偷拍| 丁香久久| av天堂影视中文在字幕在线中文 | 性老妇一区二区三区| 天天干2019| 国产欧美精品日韩区二区麻豆天美| 精品久久人妻成人网| 国产精品久久久无码AV网站| 肏逼福利网站| 国产91影院| 97久久超碰| 国内外内射高清视频| 天天综合网~91| 少妇九九九九| 蜜臀99精品国产高清在线观看| 欧美小说区视频区| 97久久久久| 91n欧美| 久久精品一区二区| av亚欧| 亚洲无码国产探花在线观看| 操逼大黄片| 亚洲国产欧美另类自拍| 久久久久久精品免费看A级| 久久精品店| 国产尹人在线视频免费| www.99色| 97一区二区蜜臀| 精产国品一区二三产品| 久久亚码| 亚洲中文丝袜美腿诱惑字幕| 亚洲人妻久久| 国产极品精品美女视频| 欧美日韩性爱操大逼| 蜜乳av首页| 亚洲AV小说| 亚洲三级网址久久最新| 中文久久96| 97欧美日韩精品| 一起草视频在线| 日本αv| 日韩乱中文| 99视频在线| a男人的天堂| 国产视频第2页| 天天夜夜rb| 思思热在线视频免费| 日韩精品一区二区日韩| 屌逼麻豆| 91激情综合| 久这精品中文在线观看视频| 岛国激情视频在线观看| 五月丁香综合啪啪| 四虎免费看黄| 91久热| 欧美18 在线观看| 国产福利精品最新在线| 久久超碰97中文字幕| 九色 蝌蚪 熟女自 | 欧美大香蕉卡久久| 超碰97导航| 国产精品午夜AV完会免费| 日韩人妻播放| 亚洲最大黄网| 91操熟女视频| 性色av蜜臀av色欲aV| 亚洲黑丝在线| 国产后入清纯| 综合伊人激情| 国产成人亚洲精品自产在线 | 亚洲精品国产无码高清| 男人夜色天堂ss| 亚洲日韩欧美一区二区| 综合亚洲欧美精品日韩?v| 日本一级黄色电影| 91n免费处女| 你懂的在线观看区国产| 99在线免费视频| daxiangjiao你懂的| 一区二区三区机械有限公司| 日日夜夜国产综合| 久久天堂| 视频二区美腿丝袜制服人妻欧美| 青青青草伊人精品| ..日韩av毛片精品久久久| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 中文字幕二区日韩天堂| 91欧| 一区二区三区视频在线观看免费| 97一区二区三区视频| 精品国产Av无码久久久亚洲| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 东北黄色电影| 青青青青青手机视频| 国产精品久久伊人| 国产成人啪一区二区| 双插性欧美一二三区| 91九九九逼| 日韩激情无码影院| 91人人爽人人爽人人人,gav福利视频导航,日韩欧美亚洲国产字幕四区 | 蜜桃无码AV一区二区| 成人欧美日超碰| 国产精品亚洲一区二区三区四区| 校园春色宗合网| 成人性爱av.com| 亚热日本熟女| 国产91精品福利在线| 欧美A√综合网 | 国产精品不卡一区二区三区av| 亚洲无套久久嗯嗯| 91狠狠综合| 日韩精彩免费| 日韩九九九| 91熟女熟妇视频网站 | 欧美久久九九| 97色97干| 丝袜喷水在线| 宅男影院久久久,99| 91强在线播放| 亚洲AV无码乱码在线观看性色| 女人天堂网| 久草五月| 欧美精品宗合| m欧洲一级午老| 3d成人精品一区二区| 日韩青久久| 高清无码网址| AV乱伦专区| 国产情色第一第二页在线观看| 九月丁香综合网| 91性网| 歐美一級亂黃99在綫精品| 一区二区精品日韩欧美在线观看 | 成人亚欧免费视频| 欧美九九九| 色 婷97| 中日韩欧美精品无码AⅤ一区二区| 另类图片五月天| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 精品免费囯产一区二区三区| 嗯嗯啊啊啊好舒服| 黄色小视频日本txt| 亚川综合视频| 久久久女人| 欧美激情 日韩精品| 国产午夜无码片在线观看影视| 东京热综合久久一区二区| 草久久久| 日本狠狠干| 欧美操逼熟女| 久久久久少妇| 日本不卡免费二区| 欧美三级免费伊人| 国产欧美一区激情交| 免费家庭乱伦视频| 日曰骚久久精品| 久久綜合很很很| 在线只有精品| 人人摸人人摸人人干| 日韩视频中文字幕| 超碰天天去日穴| 1区2区3区中文字幕日韩| 91色婷婷综合久久中文字幕二区| 国产精品免费1区2区视频| 国产亚热在线久久| 国精综合一二三区影视| 大香蕉男女超碰精品在线| 国产精品久久久久久久黄无码| 91精品91久久久久77777俄罗斯老妇姓x| 天天看高清麻豆| 999日韩中文精品观看视频。| 操逼片中文| 免费a级毛片av无码久久精品中文字幕| 竹菊一区二区三区AV线| 色哟哟av网址| A啊啊在线观看| 久久这里都是精品| 99久热| 免费一级视频特黄色大片| 黄色AAAAA欧美| 欧美亚洲国产91在线| 男人的天堂va在线| 欧美日韩狠狠爱| 久久国产精品视频| 男女香蕉一区二区| 亚洲精品不卡一二三区| 青女在线| 久久爱超碰网| 久久久久大香青草精品综合| 欧美熟女妇同| 久久久婷婷| 国产超碰在线一区| 狠狠热这里都是精品| 精品一区96| 日韩在线女优天天干| 亚洲情色第一页| 男人的天堂在线有码| 国产剧情一区在线观看| 大香交伊人网| 盗摄 精品 另类 一区| 91丝袜美女国产| 亚洲日产专区| 999久久久久久久精| 久久久久久大| 91夜夜蜜桃臀1区2区3区| 一区中文字幕二区日韩| 超硑97精品| 二级久久网| 久色99999| 九99久久| 欧美日韩久久精品爱爱| 国内一区二区免费| a男人的天堂久久一级A毛片| 自怕偷自怕亚洲精品| 中文字幕一区二区在线日韩精品| 久久精品中文字幕无码l| 午夜精品久久久久久久99蜜桃一| 激情色色| 亚洲一二三精品久久网| 99黄页网站| 大香蕉2017| 91久| 国产人妖的免费的视频| 在线无码操| 天天日天天爽| 少妇与黑人高潮在线| 亚洲精品白丝| 91性网| 国产视频一区二区三区在线免费观看| 狠狠中文字幕| 色五月婷婷在线| 91麻豆天美传媒HD| 白嫩91在线亚洲| 日韩无码一级黄色av片| 日韩一级特黄av毛片| 亚洲操人| 夜夜国产一区| 密臀在线一区尤物| 在线免费观看日韩一区| 1024人妻| 日本超碰97日韩精品人妻| 亚州精品人妻一二三区| 亚洲情色欧美| 无码人妻丰满热妇又大又粗| 日韩pv中文| 日日嗨AV一区二区夜夜| 东北女人操逼| 91小视频| 欧美日韩电影一区二区| 东北老熟女| 日韩人妻一二三区视频| 污啪啪啪视频| 91久久久久久久| 日本不卡二区| 超碰在线看| 人妻少妇精品久久久| 9118禁| 超碰98综合网| 超碰九7| 国产视频一区二区免费| 热久日综合| 久久狠狠色噜噜狠狠狠狠97| 成视频在线观看免费看| 男人的天堂2000| 69国产对白刺激| 91操操| 综合大香蕉美。| 久久久久久亚洲中文| 一二三啪啪专区| 久草资源在线| 中文字幕jul-617人妻熟女| 欧洲与亚洲欧美精品中文字幕| 高清无码人妻久久久一区二区三区aⅴ| 亚洲日韩美国人妻| 女性喷水高潮在线观看| 中日韩熟女| 日韩色女精品| 97视频在线视频| www久久国产精品| 青青草中文-久久青草精品一区二区三| 精品久久久不卡一区二区| 欧美性爽xyxOOOO| 亚州色交| 伊人操| 99热综合| 久久99九九九九6666免费观看软件| 亚洲精品第一| 91 国产丝袜在线播放-百度| 久久av一级av少妇av高潮| 97色97好| 啪啪啪东京| 高潮嗯啊性感美女久久久| 一级做受视频免费是看美女| 久久99国产综合精品女同| 国产高清自拍| 久久色激情一区二区三区| 一区二区高清视频| 厕所偷拍在线| 日本黄大片在线观看视频| 欧美午夜色妇色鬼| 超碰在线欧美性爱激情| 中文字幕天天天天天| 国产精品一区二区手机看片| 97人人爱人人做人人乐| WWW啪啪的com| 97视频新免费| 国产精品成人无码av| 欧美自拍网| 夜夜爽77777| 日产操逼| 91麻豆一二三区| 成人网站 免费观看| 久久久久久99999国产精品| 激情丁香婷婷| 亚洲性网| 国产精品不卡一区二区三区| 国产粉嫩出水在线播放| 78精品| 亚熟在线| 激情干在线| 另类欧美色| 欧美一二三区四五区| 亚洲va有码在线天堂| 中出91视频| 欧美大码在线视频| 变态乱伦伪娘灌肠一区二区| 亚洲91射| 啊啊啊com| 欧美另类精品xxxx| 亚洲同性aV综合| 精品久久久av| 精品人妻一区| 日本二三四区| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 性天堂| 九七毛片九九毛片| 中文字幕 码 自拍 视频 区| 久操91视频| 亚洲日韩资源| 欧美中文字幕一区| 色五月婷婷色| 亚洲精品性爱片| 欧美一级二级三级| 91 亚洲情侣偷拍 久久| 超碰av人人人| 国产第25页在线观看| 久久精品国产亚洲5555| 亚洲影视第一页| 日本伦理一区二区| 丁香五月天激情| 一级@啪啪视频| 欧美精品庄| 97欧美久久久久久久| 厕所偷拍在线| 丁香五月天视频| 日本国产高清色www视频在线| 清纯唯美亚洲| 美女性91| 另类成人首页一区| 久久中出在线| 熟女丝袜视频| 日韩无码专区| 美女一区二区国产精品| 国产丝袜欧美在线视频| 久久无码精品| 蜜臀Av一区二区三区| 熟妇国产免费一区| 青青草精品| 99re这里只有精品中心播放| 色丁香久久| 久久久国产亚洲精品系列| 999精品国产高清一区二区| 蜜臀久久99精品久久久电影| 欧美日综合| 人人操人人精品影片| 精品人妻一区二区三区视频| 91丝袜美腿网站| 天天综合色电影| 99欧美| 激情五月婷| 97啪啪| 国产成人网站在线观看| 午夜理论片在线观看免费| 天天做日日做| 欧美成人四级在线播放| 免费福利视频中文字幕| 国产91亚洲精品一区二区三区| 国产AV久久久蜜爱影集| 中国国产精品一区视频| 国产操逼视频在线观看| AV一起草在线| 婷婷在线视频在线观看| 青青青国产手线观看视频2| 国产精品免费久久久久久久久久| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 999久久久久久久精| 九九热免费国产视频婷婷伊人| 五月丁香六月婷| 久久久一级| 国产成人资源| 97高清啪啪| 69视频福利导航| 欧美在线l亚洲| 久久久久斤小| 91精品国| 青娱乐91| 2018天天日天天日| se01国产在线视频| 333kkkk·亚洲com久久| 天天天天天干夜夜夜夜夜操| 五月天大香蕉| 亚洲日韩肥臀视频在线观看| 天天影视激情欧美| 少妇内射www在线观看视频 | 久久婷婷色| 天天影视网综合少妇| 韩国女主播青草福利视频| 大香蕉十区| 小骚逼被操的爽不爽| 日本五区不卡| 夜色91| 精品人妻1区| 日韩成人大片一区二区| 久久精品一区二区三区不卡| 亚洲A色| 亚洲精品久久一区二区三区蜜桃臀| 91精品国产91久久久久久久久久久久| JuliaAnn丝袜熟女系列| 日本操逼视频在线| 黑人无码一区二区| 天天操天天插| 国产传媒1234区| 亚洲97网站| 免费a v| 国产精品成人蜜臀AV在线| 日韩人妻大香蕉| 伊人991| 天天天肏屄肏屄肏屄欧美欧美| 天天草天天日| 肉嘟嘟www视频在线观看高清| 大香蕉亚洲中文| 啊好爽快点-国产一区二区三区撒尿在线-成人AV| 精品一二三区女同| 91 丝袜在线播放| 伊人久久综合精品欧美| 夂久色| 蜜乳av一区二区三区| 综合网欧美| 亚洲一区二区三区欧美日韩| 高清不卡一二三区视频......| 亚洲性感丝袜诱惑在线观看| 久久人| 蜜乳性色无码专日粉嫩骚逼AV| 97中文超碰| 久久青娱乐| 国产精品亚洲无码| 精品超碰中文在线| 9ⅰ久久久天天| 国产精品视频91久久| AV九九| 成人久久久精品| 色综合一本| 99在线免费观看| 男女性扦B| 人人做,人人操,人人摸| 极品色社| 欧美操逼录像国产黄色国产| 乱伦图一区| 欧美色997| 久久久久久9| 色婷婷久久| 97视频在线视频| 秋霞一级A片黄色视频| 天天日B狠狠操| AV天堂因数| 国模精品一区二区三区苹果色戒| 日韩视频小说在线观看 | 人人噜夜夜操| 久久午夜鲁丝片| 青青操97| 欧美亚洲小说| 91一区二区| 欧美综合综合| 在线看免费无码AV天堂的| 无码久| 欧美性爱91| 欧美 青青草| 俺去啦俺来也久久综合| 大香蕉 222| 97日韩欧美亚洲| 国产亚州高清国产拍精| 日本免费一区二区不卡| 欧美黑人精品在线播放| 午夜天堂精品久久| 欧美一级A一级a爱片久久| 精品精品精品| 综合97| 欧美人妻二区三区| A级片一区| 精品国产一区二区三区久久久蜜臀| 久久大黄片| 国产自产91区13区| 欧美熟妇成人一区二区| 九热大香蕉| 五月天久久综合网| 欧美激情色婷婷花野真衣一区二区| 国产精品视频麻豆入口| 亚洲熟久久| 亚洲免费人妻在| 老熟女天天操| 天天爽爽爽爽| 日韩AV无码网站| 蜜桃久久久久久久久久久久| 国产精品亚洲天堂网址| 亚洲精品不卡一二三区| 日韩AV一起草| 亚洲图片91| 成人AV素股で擦久久| 久草综合京东| 免费一级性爱久久| 精品一区99999| 五月丁香六月婷| 精品国产三级av韩国在线| 九九九影院| 熟女视频久久| 中文字幕三四区| 性生活久久久久久久久久| 国产精品探花视频| 97资源站日韩| 亚洲AV乱码专区国产噜噜亚洲 | 蘋果手機免費看成人Av| 亚洲国产欧美中日韩成人综合视频| 精品人妻一区二区三区免费视频| 久久精品人体| 在线播放一级无码视频| 欧美综合色图片| 日韩久久超碰色| 另类一区| 婷婷色综合欧美日韩| 青青伊人久久| 狠狠久久亚洲欧美专区| 国产美女销魂在线观看不卡| 尤物视频偷拍免费| 日夜啪电影| 成人性爱美曰韩| 国产久久久久久| 97超碰免费人人性爱| 婷婷丁香五月综合| 中文字幕精品一区二| 久久久精品,3| 久久久性爱视频| 日本一级一级一级一级| 国产亚洲精品久久久久小| 亚洲蜜臀精品视频久久| 天天干天天日天天射黄色大片 | 日韩情色AV| 91黑丝露脚| 另类 日韩 熟女| 男插女青青影院| 九久久精| 亚洲欧美在线综合| 操我啊啊啊啊啊| 99精彩视频| 久久国内| xxxx网站亚洲精品| 丝袜亚洲综合| 色婷婷日韩精品一区二区三区| 91九九九逼| 少妇蜜汁| www.狠狠| 立川理惠加勒比无码| 噜噜噜在线视频| 操屄日韩| 熟女人妻精品一区二区视频| 91美女国产在线| 操亚州| 伊人久久大香蕉线AV五月天| 日韩97超碰中文字幕| 国产亚州日韩欧美看片| 国产精品呦一区二区三区| 亚洲午夜未满十八勿入网站日本又色又爽又黄| 大香交| 丰满人妻一区二区中文| 午夜啊啊啊| 色91综合网| 久久综合日韩亚洲欧美| 极品色社| 人妻激情偷乱视频一区二区三区 | 尹人大香蕉视频在线| 中国探花熟女| 国产精品无码av嫩草| 欧美日韩另类在线播放| 夜夜草天天| 激情综合网激情综合| 亚洲情欲| 97超碰欧美| 日韩精品人妻| 色噜噜国产精品视频一区二区| 韩日欧亚a级| 后入人妻无码| 中文字幕欧美精品亚洲日韩蜜臀| 日韩大香蕉精品在线视频| 96久久久精品| 97超碰总站| 中文子幕一二三| 天天日熟妇| 人妻少妇精品无码专区二区密桃| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 欧美日韩电影成人在线| 日本色色视频网站| 亚洲精品毛片在线观看| 国产一区二区三三视频| 人人操人人操人人操人人操人人操人人人11.CM | 嫩草一区二区在线观看| 一区二区三区 日韩欧美| 国产福利影视| 99热在线观看|