免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

ARTICLE DETAIL

資訊詳情

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

企業(yè)微信臨時(shí)素材上傳:從踩坑到優(yōu)雅實(shí)現(xiàn)

企業(yè)微信臨時(shí)素材上傳:從踩坑到優(yōu)雅實(shí)現(xiàn) 1. 臨時(shí)素材上傳到底難在哪企業(yè)微信的臨時(shí)素材上傳看起來只是調(diào)一個(gè)接口的事但真到業(yè)務(wù)里跑起來坑比想象中多。我前后在三個(gè)項(xiàng)目里踩過這個(gè)環(huán)節(jié)從最開始用最樸素的方式硬懟到后來逐步抽象出一套相對(duì)優(yōu)雅的方案中間交了不少學(xué)費(fèi)。這篇文章就把這些經(jīng)驗(yàn)完整拆開講一遍適合正在對(duì)接企業(yè)微信素材能力、或者已經(jīng)對(duì)接但被各種邊界情況折騰過的開發(fā)者參考。先把概念理清楚。企業(yè)微信的臨時(shí)素材指的是上傳后只在服務(wù)端保留三天的媒體文件包括圖片、語音、視頻和普通文件。它和永久素材最大的區(qū)別就是生命周期短但勝在上傳接口簡單、不需要額外的素材管理邏輯。典型使用場(chǎng)景是客服系統(tǒng)里發(fā)送一張工單截圖、審批流里附帶一個(gè)PDF附件、機(jī)器人推送一段語音通知。這些場(chǎng)景的共同特點(diǎn)是文件用完即棄不需要長期存儲(chǔ)臨時(shí)素材剛好匹配。那難點(diǎn)在哪我總結(jié)下來主要是四塊第一上傳接口用的是multipart/form-data和普通JSON請(qǐng)求的封裝方式完全不同很多HTTP工具類默認(rèn)不支持或者支持得別扭第二media_id這個(gè)返回值有有效期業(yè)務(wù)側(cè)如果緩存了它過期后發(fā)送會(huì)直接失敗第三文件類型和大小有硬性限制圖片不能超過10MB、語音不能超過2MB且只支持AMR和MP3、視頻不能超過10MB超了接口直接報(bào)錯(cuò)第四并發(fā)上傳時(shí)如果多個(gè)請(qǐng)求同時(shí)拿同一個(gè)文件流會(huì)出現(xiàn)流被消費(fèi)完導(dǎo)致后續(xù)請(qǐng)求拿到空內(nèi)容的問題。這四點(diǎn)里前兩點(diǎn)是認(rèn)知問題后兩點(diǎn)是實(shí)打?qū)嵉募夹g(shù)坑。我見過不少項(xiàng)目在這塊的處理方式是寫一個(gè)工具方法每次要發(fā)文件就現(xiàn)讀現(xiàn)傳傳完拿到media_id立刻用掉。這種方式在低頻場(chǎng)景下沒問題但一旦量上來比如一天幾千次上傳就會(huì)暴露出重復(fù)上傳、流管理混亂、錯(cuò)誤處理缺失等一系列問題。所以“優(yōu)雅”這個(gè)詞在這里不是錦上添花而是有明確的工程價(jià)值——它意味著可復(fù)用、可觀測(cè)、可容錯(cuò)。下面我會(huì)從整體設(shè)計(jì)思路開始一步步拆到具體實(shí)現(xiàn)把每個(gè)決策背后的理由講清楚。你如果只是想快速抄個(gè)能跑的代碼可以直接跳到第三節(jié)但如果你想搞清楚為什么這么設(shè)計(jì)建議從頭看。2. 整體方案設(shè)計(jì)與選型考量2.1 為什么不用現(xiàn)成的SDK企業(yè)微信官方提供了多語言SDKJava、Python、PHP都有。我最初也想過直接用SDK省事但實(shí)際用下來發(fā)現(xiàn)兩個(gè)問題。一是SDK往往把a(bǔ)ccess_token的管理和素材上傳耦合在一起而access_token本身需要全局緩存和刷新如果每個(gè)上傳請(qǐng)求都去觸發(fā)一次token獲取在高并發(fā)下會(huì)頻繁打企業(yè)微信的接口觸發(fā)頻率限制。二是SDK的封裝層次比較深出問題的時(shí)候排查鏈路長比如上傳失敗你很難快速判斷是token問題、網(wǎng)絡(luò)問題還是文件本身的問題。所以我的選擇是access_token自己管上傳邏輯自己寫只依賴一個(gè)通用的HTTP客戶端。這樣每一層都是透明的出問題能快速定位。當(dāng)然這不是說SDK不好如果你的項(xiàng)目規(guī)模小、上傳頻率低用SDK完全沒問題。但如果你追求可控性和可觀測(cè)性自己封裝是更穩(wěn)的路。2.2 核心設(shè)計(jì)原則整個(gè)方案我定了三條原則。第一條是流的一次性消費(fèi)文件流從磁盤或網(wǎng)絡(luò)讀進(jìn)來之后只允許被消費(fèi)一次避免重復(fù)讀取導(dǎo)致的性能損耗和狀態(tài)混亂。第二條是media_id不跨請(qǐng)求緩存每次上傳拿到media_id后立即返回給調(diào)用方由調(diào)用方在本次業(yè)務(wù)邏輯內(nèi)用完即棄不做全局緩存。第三條是錯(cuò)誤分層把網(wǎng)絡(luò)錯(cuò)誤、接口錯(cuò)誤、文件校驗(yàn)錯(cuò)誤分開處理每類錯(cuò)誤有不同的重試策略和日志級(jí)別。這三條原則看起來簡單但落地的時(shí)候需要一些設(shè)計(jì)上的取舍。比如第一條如果調(diào)用方傳進(jìn)來的是一個(gè)InputStream那上傳完之后這個(gè)流就關(guān)了調(diào)用方不能再讀。所以我在接口設(shè)計(jì)上要求調(diào)用方傳文件路徑或者字節(jié)數(shù)組而不是流。字節(jié)數(shù)組適合小文件文件路徑適合大文件這樣內(nèi)部可以自己控制流的生命周期。2.3 模塊劃分整個(gè)上傳能力我拆成了四個(gè)模塊。TokenManager負(fù)責(zé)access_token的獲取、緩存和刷新用雙檢鎖加過期時(shí)間控制保證多線程下只有一個(gè)線程去刷新。MediaValidator負(fù)責(zé)文件校驗(yàn)包括類型、大小、擴(kuò)展名校驗(yàn)不通過直接拋業(yè)務(wù)異常不走網(wǎng)絡(luò)請(qǐng)求。MediaUploader是核心上傳邏輯負(fù)責(zé)組裝multipart請(qǐng)求、發(fā)送、解析響應(yīng)。UploadResult是統(tǒng)一的返回結(jié)構(gòu)包含media_id、類型、創(chuàng)建時(shí)間以及一個(gè)isSuccess的標(biāo)志。這四個(gè)模塊之間是單向依賴Uploader依賴Validator和TokenManagerValidator和TokenManager互不依賴。這樣的好處是每個(gè)模塊可以單獨(dú)測(cè)試比如Validator的測(cè)試不需要mock網(wǎng)絡(luò)TokenManager的測(cè)試不需要真實(shí)文件。2.4 關(guān)于multipart的選型multipart/form-data的組裝我試過三種方式。第一種是手寫boundary拼接字節(jié)流靈活但容易出錯(cuò)尤其是boundary和內(nèi)容里出現(xiàn)沖突的時(shí)候。第二種是用Apache HttpClient的MultipartEntityBuilder封裝好、穩(wěn)定但引入了一個(gè)比較重的依賴。第三種是用OkHttp的MultipartBody輕量、API清晰我最終選了這個(gè)。選OkHttp的理由是它的MultipartBody.Builder用起來很直觀addFormDataPart可以同時(shí)指定name、filename和RequestBody而且RequestBody可以基于文件或字節(jié)數(shù)組創(chuàng)建天然支持流式上傳。另外OkHttp的連接池和超時(shí)控制也比較成熟不需要自己再造輪子。如果你用的是Java生態(tài)里的其他HTTP客戶端思路是一樣的關(guān)鍵是找到支持流式multipart的API。3. 核心細(xì)節(jié)與實(shí)操要點(diǎn)拆解3.1 access_token的管理策略access_token是企業(yè)微信所有接口的通行證有效期7200秒也就是兩小時(shí)。它的獲取接口有頻率限制而且新獲取的token會(huì)讓舊的失效。這意味著你不能每個(gè)請(qǐng)求都去獲取也不能緩存太久導(dǎo)致過期。我的做法是用一個(gè)帶過期時(shí)間的緩存key是應(yīng)用的corpId和secret的組合value是token和過期時(shí)間戳。獲取token的時(shí)候先查緩存如果存在且距離過期還有300秒以上直接用否則加鎖去刷新。加鎖用雙檢鎖避免多個(gè)線程同時(shí)刷新。刷新成功后更新緩存失敗則拋異常讓上層決定是否重試。這里有個(gè)細(xì)節(jié)過期時(shí)間不要設(shè)成7200秒整要留出網(wǎng)絡(luò)延遲和時(shí)鐘偏差的余量。我一般設(shè)成6900秒也就是提前300秒過期。另外如果企業(yè)微信返回的token過期時(shí)間字段和預(yù)期不一致以返回的為準(zhǔn)不要硬編碼。注意access_token的緩存不要用本地Map簡單存多實(shí)例部署的時(shí)候每個(gè)實(shí)例都會(huì)各自刷新導(dǎo)致token頻繁失效。生產(chǎn)環(huán)境建議用Redis之類的集中式緩存或者至少保證同一時(shí)間只有一個(gè)實(shí)例在刷新。3.2 文件校驗(yàn)的邊界條件文件校驗(yàn)看起來簡單但邊界條件不少。企業(yè)微信對(duì)臨時(shí)素材的限制是這樣的圖片支持JPG、PNG、GIF、BMP、JPEG大小不超過10MB語音支持AMR、MP3大小不超過2MB播放長度不超過60秒視頻支持MP4大小不超過10MB普通文件大小不超過20MB。校驗(yàn)的時(shí)候要注意幾點(diǎn)。第一擴(kuò)展名和實(shí)際內(nèi)容可能不一致比如一個(gè)exe文件改名為jpg光看擴(kuò)展名是攔不住的。如果業(yè)務(wù)安全要求高需要讀文件頭做魔數(shù)校驗(yàn)。第二大小校驗(yàn)要在讀取文件之前做用File.length()獲取避免把大文件讀進(jìn)內(nèi)存才發(fā)現(xiàn)超限。第三語音的時(shí)長校驗(yàn)比較麻煩需要解析音頻文件頭如果業(yè)務(wù)不強(qiáng)制可以只校驗(yàn)大小和格式時(shí)長交給企業(yè)微信接口去判斷。我一般把校驗(yàn)規(guī)則做成配置用枚舉定義每種類型的允許擴(kuò)展名和大小上限這樣新增類型的時(shí)候只改配置不改代碼。校驗(yàn)失敗的時(shí)候拋出帶明確錯(cuò)誤碼的異常比如FILE_TOO_LARGE、UNSUPPORTED_TYPE方便上層做不同的提示。3.3 multipart請(qǐng)求的組裝細(xì)節(jié)組裝multipart請(qǐng)求的時(shí)候有幾個(gè)細(xì)節(jié)容易忽略。第一boundary的生成要用隨機(jī)字符串不要用固定值避免和文件內(nèi)容沖突。OkHttp會(huì)自動(dòng)生成不用自己管。第二Content-Type要設(shè)成multipart/form-data并且?guī)蟗oundary參數(shù)這個(gè)OkHttp的MultipartBody會(huì)自動(dòng)處理。第三每個(gè)part的name要和接口文檔一致企業(yè)微信上傳接口的字段名是media類型是filefilename要帶上原始文件名和擴(kuò)展名。代碼大概長這樣RequestBody fileBody RequestBody.create(file, MediaType.parse(application/octet-stream)); MultipartBody body new MultipartBody.Builder() .setType(MultipartBody.FORM) .addFormDataPart(media, file.getName(), fileBody) .build(); Request request new Request.Builder() .url(uploadUrl ?access_token token type type) .post(body) .build();這里type參數(shù)是素材類型取值是image、voice、video、file。注意type要放在URL的query參數(shù)里不是放在body里這是企業(yè)微信接口的設(shè)計(jì)。3.4 響應(yīng)解析與錯(cuò)誤處理企業(yè)微信上傳接口的響應(yīng)是JSON成功的時(shí)候返回media_id、type、created_at。失敗的時(shí)候返回errcode和errmsg。解析的時(shí)候要先判斷HTTP狀態(tài)碼再判斷errcode。有些錯(cuò)誤是HTTP 200但errcode非0比如40001表示token無效40004表示媒體文件類型不合法40005表示文件大小超限。我的處理方式是HTTP非200直接拋網(wǎng)絡(luò)異常HTTP 200但errcode非0則根據(jù)errcode映射成業(yè)務(wù)異常。40001這種token失效的錯(cuò)誤觸發(fā)一次token刷新后重試一次其他錯(cuò)誤直接拋給上層不重試。重試只做一次避免無限循環(huán)。提示errcode的映射表建議做成常量類不要散落在代碼里。企業(yè)微信的錯(cuò)誤碼有幾百個(gè)常用的就那幾十個(gè)維護(hù)一份自己的映射表比每次查文檔快得多。3.5 并發(fā)場(chǎng)景下的流管理并發(fā)上傳同一個(gè)文件的時(shí)候如果多個(gè)線程共享一個(gè)InputStream會(huì)出現(xiàn)流被消費(fèi)完的問題。我的做法是接口只接受File或byte[]不接受InputStream。如果是File每個(gè)線程自己打開一個(gè)新的FileInputStream如果是byte[]每個(gè)線程自己創(chuàng)建一個(gè)新的ByteArrayInputStream。這樣每個(gè)上傳請(qǐng)求都有獨(dú)立的流互不干擾。如果是大文件用File的方式更省內(nèi)存因?yàn)镺kHttp會(huì)流式讀取文件不會(huì)一次性加載到內(nèi)存。如果是小文件用byte[]更方便因?yàn)榭梢詮?fù)用不需要反復(fù)讀磁盤。我一般設(shè)一個(gè)閾值比如1MB以下的用byte[]以上的用File。4. 完整實(shí)操流程與關(guān)鍵環(huán)節(jié)4.1 環(huán)境準(zhǔn)備與依賴引入先說一下環(huán)境。我用的是Java 8加OkHttp 4.x構(gòu)建工具是Maven。依賴只需要兩個(gè)OkHttp和Jackson前者做HTTP請(qǐng)求后者解析JSON。如果你用的是Gradle換成對(duì)應(yīng)的坐標(biāo)就行。dependency groupIdcom.squareup.okhttp3/groupId artifactIdokhttp/artifactId version4.9.3/version /dependency dependency groupIdcom.fasterxml.jackson.core/groupId artifactIdjackson-databind/artifactId version2.13.0/version /dependencyOkHttp 4.x需要Kotlin標(biāo)準(zhǔn)庫Maven會(huì)自動(dòng)帶上不用手動(dòng)加。如果你用的是Java 11以上也可以考慮用Java自帶的HttpClient但multipart的支持不如OkHttp方便需要自己拼boundary。4.2 TokenManager的實(shí)現(xiàn)TokenManager的核心是一個(gè)帶過期時(shí)間的緩存和一個(gè)刷新鎖。我用ConcurrentHashMap存tokenkey是corpId加secretvalue是一個(gè)包含token和過期時(shí)間的對(duì)象。獲取token的方法先查緩存判斷是否過期過期則加鎖刷新。public String getToken(String corpId, String secret) { String key corpId : secret; TokenCache cache tokenMap.get(key); if (cache ! null !cache.isExpired()) { return cache.getToken(); } synchronized (this) { cache tokenMap.get(key); if (cache ! null !cache.isExpired()) { return cache.getToken(); } String token fetchTokenFromApi(corpId, secret); tokenMap.put(key, new TokenCache(token, System.currentTimeMillis() 6900 * 1000)); return token; } }fetchTokenFromApi就是調(diào)企業(yè)微信的gettoken接口解析返回的access_token和expires_in。注意expires_in是秒要轉(zhuǎn)成毫秒。如果接口返回errcode非0拋異常。注意synchronized鎖的是this如果TokenManager是單例沒問題如果是多例鎖不住。生產(chǎn)環(huán)境建議用分布式鎖或者保證TokenManager是單例。4.3 MediaValidator的實(shí)現(xiàn)Validator的職責(zé)是校驗(yàn)文件是否符合企業(yè)微信的要求。我用一個(gè)枚舉定義每種類型的規(guī)則public enum MediaType { IMAGE(image, Arrays.asList(jpg, jpeg, png, gif, bmp), 10 * 1024 * 1024), VOICE(voice, Arrays.asList(amr, mp3), 2 * 1024 * 1024), VIDEO(video, Arrays.asList(mp4), 10 * 1024 * 1024), FILE(file, Collections.emptyList(), 20 * 1024 * 1024); private final String type; private final ListString allowedExtensions; private final long maxSize; // 構(gòu)造方法和getter省略 }校驗(yàn)方法接收File和MediaType先判斷文件是否存在再判斷大小再判斷擴(kuò)展名。FILE類型不限制擴(kuò)展名只限制大小。校驗(yàn)不通過拋MediaValidationException帶上錯(cuò)誤碼。4.4 MediaUploader的核心邏輯Uploader是核心流程是校驗(yàn)文件、獲取token、組裝multipart、發(fā)送請(qǐng)求、解析響應(yīng)、返回結(jié)果。我把它寫成一個(gè)方法接收File、MediaType、corpId、secret返回UploadResult。public UploadResult upload(File file, MediaType type, String corpId, String secret) { validator.validate(file, type); String token tokenManager.getToken(corpId, secret); String url UPLOAD_URL ?access_token token type type.getType(); RequestBody fileBody RequestBody.create(file, MediaType.parse(application/octet-stream)); MultipartBody body new MultipartBody.Builder() .setType(MultipartBody.FORM) .addFormDataPart(media, file.getName(), fileBody) .build(); Request request new Request.Builder().url(url).post(body).build(); try (Response response client.newCall(request).execute()) { String responseBody response.body().string(); return parseResponse(responseBody, type); } catch (IOException e) { throw new MediaUploadException(NETWORK_ERROR, e); } }parseResponse解析JSON如果errcode是0返回成功的UploadResult如果是40001刷新token后重試一次其他錯(cuò)誤拋異常。4.5 重試機(jī)制的實(shí)現(xiàn)重試只針對(duì)token失效和網(wǎng)絡(luò)超時(shí)兩種情況。token失效的重試邏輯是捕獲到40001錯(cuò)誤后強(qiáng)制刷新token重新組裝請(qǐng)求再發(fā)一次。網(wǎng)絡(luò)超時(shí)的重試是捕獲IOException后判斷是否是超時(shí)是則重試一次不是則直接拋。重試次數(shù)我設(shè)成1次也就是最多發(fā)兩次請(qǐng)求。為什么不設(shè)更多因?yàn)槠髽I(yè)微信的接口本身有頻率限制重試太多會(huì)觸發(fā)限流反而更慢。而且如果是文件本身的問題重試多少次都沒用。private UploadResult uploadWithRetry(File file, MediaType type, String corpId, String secret, int retryCount) { try { return doUpload(file, type, corpId, secret); } catch (TokenExpiredException e) { if (retryCount 0) { tokenManager.refresh(corpId, secret); return uploadWithRetry(file, type, corpId, secret, retryCount - 1); } throw e; } catch (IOException e) { if (retryCount 0 isTimeout(e)) { return uploadWithRetry(file, type, corpId, secret, retryCount - 1); } throw new MediaUploadException(NETWORK_ERROR, e); } }4.6 調(diào)用示例與結(jié)果處理調(diào)用的時(shí)候業(yè)務(wù)代碼只需要三行MediaUploader uploader new MediaUploader(); UploadResult result uploader.upload(new File(/path/to/image.jpg), MediaType.IMAGE, corpId, secret); String mediaId result.getMediaId();拿到mediaId后立即在本次業(yè)務(wù)邏輯里用掉比如調(diào)發(fā)送消息接口。不要存到數(shù)據(jù)庫或者緩存里因?yàn)槿旌缶褪Я?。如果業(yè)務(wù)需要長期保存應(yīng)該把文件存到自己的對(duì)象存儲(chǔ)需要發(fā)送的時(shí)候再上傳一次。提示media_id的有效期是三天但實(shí)際使用中建議按兩天半來規(guī)劃留出余量。如果業(yè)務(wù)邏輯比較復(fù)雜從上傳到發(fā)送之間可能間隔很久那就要考慮重新上傳。5. 常見問題與排查技巧實(shí)錄5.1 上傳失敗排查速查表錯(cuò)誤現(xiàn)象可能原因排查方法解決方案返回40001token無效或過期檢查token緩存是否過期是否被其他實(shí)例刷新覆蓋刷新token后重試檢查緩存策略返回40004文件類型不合法檢查擴(kuò)展名和實(shí)際類型是否匹配修正文件類型或做魔數(shù)校驗(yàn)返回40005文件大小超限檢查文件實(shí)際大小壓縮文件或分片上傳返回41001缺少access_token參數(shù)檢查URL拼接確認(rèn)token不為空連接超時(shí)網(wǎng)絡(luò)問題或企業(yè)微信側(cè)限流檢查網(wǎng)絡(luò)連通性查看是否觸發(fā)頻率限制增加超時(shí)時(shí)間降低并發(fā)流被關(guān)閉多線程共享InputStream檢查是否傳入了共享流改用File或byte[]中文文件名亂碼編碼問題檢查filename的編碼用URLEncoder編碼文件名5.2 我踩過的三個(gè)坑第一個(gè)坑是token緩存用了本地Map結(jié)果多實(shí)例部署的時(shí)候A實(shí)例刷新了tokenB實(shí)例還在用舊的導(dǎo)致間歇性40001。后來改成Redis集中緩存問題解決。這個(gè)坑的教訓(xùn)是任何有狀態(tài)的東西在多實(shí)例環(huán)境下都要考慮一致性問題。第二個(gè)坑是文件校驗(yàn)只看了擴(kuò)展名結(jié)果有個(gè)用戶上傳了一個(gè)改名為jpg的文本文件企業(yè)微信返回40004。后來加了魔數(shù)校驗(yàn)讀文件前幾個(gè)字節(jié)判斷真實(shí)類型。魔數(shù)校驗(yàn)的規(guī)則是JPG開頭是FFD8PNG開頭是89504E47GIF開頭是47494638。讀前8個(gè)字節(jié)就夠了。第三個(gè)坑是并發(fā)上傳同一個(gè)文件時(shí)多個(gè)線程共享了一個(gè)FileInputStream導(dǎo)致部分請(qǐng)求拿到空內(nèi)容。后來改成每個(gè)請(qǐng)求自己打開流問題解決。這個(gè)坑的教訓(xùn)是流是有狀態(tài)的不能跨線程共享。5.3 性能優(yōu)化的幾個(gè)點(diǎn)如果上傳頻率很高有幾個(gè)優(yōu)化點(diǎn)可以考慮。第一用連接池OkHttp默認(rèn)有連接池復(fù)用TCP連接減少握手開銷。第二大文件用流式上傳不要讀進(jìn)內(nèi)存OkHttp的RequestBody.create(File)就是流式的。第三token緩存用集中式緩存避免每個(gè)實(shí)例都去刷新。第四批量上傳的時(shí)候用異步OkHttp的enqueue方法可以并發(fā)發(fā)送但要注意控制并發(fā)數(shù)避免觸發(fā)限流。我實(shí)測(cè)下來單實(shí)例每秒上傳10個(gè)1MB的文件CPU和內(nèi)存都很平穩(wěn)。如果超過這個(gè)量建議做隊(duì)列削峰把上傳請(qǐng)求放到隊(duì)列里慢慢消費(fèi)。5.4 日志與監(jiān)控上傳這種外部依賴的操作日志一定要打全。我一般記錄這幾個(gè)字段請(qǐng)求ID、文件大小、文件類型、耗時(shí)、結(jié)果碼。請(qǐng)求ID用于串聯(lián)上下游日志文件大小和類型用于分析失敗分布耗時(shí)用于發(fā)現(xiàn)性能問題結(jié)果碼用于統(tǒng)計(jì)成功率。監(jiān)控方面我會(huì)統(tǒng)計(jì)上傳成功率、平均耗時(shí)、失敗原因分布。成功率低于99%就告警平均耗時(shí)超過2秒也告警。失敗原因分布能幫你快速定位是token問題還是文件問題。注意日志里不要打media_id的完整值打前幾位就行避免泄露。也不要打access_token這個(gè)是敏感信息。5.5 關(guān)于素材類型的幾個(gè)疑問有人問過圖片能不能當(dāng)文件上傳可以type傳file就行但這樣企業(yè)微信不會(huì)做圖片處理發(fā)送的時(shí)候也是當(dāng)文件發(fā)。反過來文件能不能當(dāng)圖片上傳不行企業(yè)微信會(huì)校驗(yàn)實(shí)際類型不匹配會(huì)返回40004。還有人問視頻的封面怎么處理企業(yè)微信上傳視頻接口支持傳封面但臨時(shí)素材接口不支持只有永久素材接口才支持。如果業(yè)務(wù)需要封面要么用永久素材要么自己在發(fā)送的時(shí)候處理。語音的時(shí)長限制是60秒這個(gè)是在上傳的時(shí)候校驗(yàn)的超過會(huì)返回錯(cuò)誤。如果你不確定音頻時(shí)長可以用FFmpeg之類的工具先探測(cè)一下或者干脆只校驗(yàn)大小讓企業(yè)微信去判斷。6. 一些個(gè)人體會(huì)這套方案我在兩個(gè)項(xiàng)目里用過整體穩(wěn)定性不錯(cuò)。最大的感受是對(duì)接外部接口優(yōu)雅的關(guān)鍵不在于代碼寫得多漂亮而在于對(duì)邊界情況的覆蓋。token過期、文件超限、網(wǎng)絡(luò)抖動(dòng)、并發(fā)沖突這些才是真正消耗精力的地方。把這些問題處理好了代碼自然就優(yōu)雅了。另外一點(diǎn)是不要過度設(shè)計(jì)。我見過有的項(xiàng)目為了上傳一個(gè)文件搞了一套復(fù)雜的責(zé)任鏈加策略模式結(jié)果維護(hù)成本比收益還高。我的建議是先跑通再抽象。等你在三個(gè)地方寫了重復(fù)的上傳邏輯再考慮抽成公共模塊。過早抽象比不抽象更可怕。最后分享一個(gè)小技巧如果你不確定企業(yè)微信的接口行為可以用curl先手動(dòng)調(diào)一次把請(qǐng)求和響應(yīng)都打出來看。比在代碼里調(diào)試快得多。比如上傳接口你可以這樣調(diào)curl -X POST https://qyapi.weixin.qq.com/cgi-bin/media/upload?access_tokenYOUR_TOKENtypeimage \ -F media/path/to/image.jpg把YOUR_TOKEN換成真實(shí)的token就能看到完整的響應(yīng)。這個(gè)方式在排查40004、40005這類錯(cuò)誤的時(shí)候特別有用因?yàn)槟隳苤苯涌吹狡髽I(yè)微信返回的errmsg比看代碼猜快多了。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
亚洲成人无码片| 97luluse| 亚洲色vA| 久草五月婷| 综合五月天| 91九色网| 4399欧美另类视频| 天天揷综合网| 婷婷在线免费| 99成人免费热视频| 91免费在线视频6| 成人在线二区| 亚洲AV免费在线| 热的国产,热的综合,热的有码 | 天天插天天干| 久久丁香五月天| 影音先锋色婷婷| 99在线资源| 久热久色| 色婷婷五月天成人网| 婷婷综合久久| 五月婷啪| 五月在线| 五月婷婷免费| 激情丁香社区| 亚洲av电影在线| 国产97色在线| 26uuu精品一区二区| 丁香花五月天激情| 超碰不卡在线| 久久激情婷婷| 狠狠CAO日日穞夜夜穞AV | 久久九九在线视频| 中国AV性爱观看| 色婷婷五月在线| 婷婷丁香社区| 成人片在线播放| 狠狠xx| 婷婷五月深情丁香深爱日韩| 久久只有18视频| 日本9区视频| 国产精品久久久久久白浆色欲| 天天撸夜夜爽| 米奇影视资源婷婷狠狠色激情欧美五月丁香 | www.婷婷六月天| 香蕉婷婷色五月| 日本WWW九九九| 久久9热好| 天天天天天日| 一起草av| 色狠狠色噜噜AV天堂五区| 99热成人| 久99热在线观看| 五月丁香亭亭天天舔| 丁香五月影视| 99在线观看亚洲| 久久新地此| 欧美日韩成人h| 久久精品国产精品| 97日本在线播放| 91精品久久久久久77777| 久久92| 亚洲色爱综合| 久久五月婷婷丁香| 色婷婷网| 噼里啪啦在线观看免费完整版视频| 色哟哟www| 五月色俺婷婷| 天天日夜夜帕| 六月色播| 九九色99| av九九| 婷婷久热| 午夜69成人做爰视频| 久久性爱视频| 99热精品在线| 国产乱轮一区二区三区| 狠狠干在线| www.五月婷| 91综合视频在线| 99干免费视频| 五月天久久www| 九月婷婷激情| 免费99情趣网视频| 韩国久久少妇视屏| 超碰人人91| 五月天天天天天天天天天天天天天天天婷婷婷 | 丁香婷婷激情四射五月| 激情丁香九九五月综合网| 91视频综合网| 国产五月丁香在线| 婷婷五月天电影在线| 五月天色视频| 婷婷操逼| 校园春色亚洲色| 久久久精品婷婷五月天| 国产免费一区二区三区三州老师F1F1.CC | 久久综合五月情| 影音先锋AV资源男人站| 久久九九爽| 久久综合激情五月天| 五月激情四射婷婷丁香| 五月天婷婷激情在线色图| 综合激情站| 97资源欧美日韩大香蕉超碰一区| 国产69久久久欧美黑人A片| 91热爆在线| 久久久久亚洲AV成人无码电影| 九九亚洲无码| 丁香五月婷婷天激情| 色久激情在线| 九九色综合九九色| 久久五月天激情婷婷| 成人av在线网址| 色五月丁香五月| 色综合色欲综合天天免费 | 国产在这里只有精品| 99爱精品| 淫视馆AV在线| 伊人狠狠综合| 国产精品成人在线| 中美日韩成人在线| 久久九九色| 亚洲色五月婷婷| 99热热热天天人人人超超碰| 亚洲第一色网站| 草综合14| 男同色五月开心五月激情五月| 大香蕉天堂| 天天狠狠插| 欧美婷婷色五月| 色玖玖| 爽tv | 五月天婷婷社区久久综合| 色五月天影视| 日韩无码成人电影| 超碰99热精品| 国产成人亚洲综合A∨婷婷| 天天色综网| 啪啪九九色| 入口五月婷婷六月香| 狠色狠色综合久久| 丰满少妇猛烈A片免费看观看| 超碰a女人的天堂| 五月开心婷婷| 精品香蕉99久久久久网站| 97九色视频| 国产99视频永久免费| 丁香婷婷基地| 亚洲色涩视频| 超碰av在线| 九色 在线| 婷婷深爱五月丁香网| 成人在线视频网| 色色色婷婷| 日本成人噜噜| 玖玖综合玖玖| 九九亚洲| 狠狠综合久久| 色色色色色色色色网站| 玖热精品综合视频| 久热91| 久久网日本| 久久999久久999久久999久久| 国产无遮挡又黄又爽免费网站| 99热偷拍| 丁香五月电影| 热的国产,热的综合,热的有码| 久久色婷婷| 亚洲婷婷久久综合| 97人人操人人爽| 久热久操久热久草国产91| 久久五月婷天天干| 丁香五夜激情四射夜夜夜| 亚洲综合五月天综合| 日本一级一级一级一级| 四虎婷婷五月天| 大香蕉九九| 欧美日韩一a.无| 丁香色五月天| 人人综合五月人人婷婷| 亚洲成人综合网在线免费观看| 丁香婷婷五月天色播| 超碰人人色| 婷婷她六月天| 欧美性生交XXXXX无码小说| 米奇激情婷婷| 无码橾| 第五色色色婷婷| 冬月かえでAV无码播放| 国产免费一区二区在线A片视频| av在线免费播放| 欧美色五月| 香蕉久久国产AV一区二区| 91丨九色丨东北熟女| 9久热| 日日干天天| 五月天婷婷色播| 婷婷在线日韩综合| 色婷天天| 岛国av电影网站| 综合精品啪啪| 五月天婷婷激情| 亚洲色婷婷激情| 久久综合五月天激情小说网站| 婷婷瑟瑟五月天| 天堂资源欧日浪女在线播放| 亚洲色婷婷| 欧美综合五月丁香六月婷| 国产精品成人网址| 精品久久久人妻| 欧美色色色| 国产亚洲色婷婷久久99精品91 www.riverspirits.org www.hnnun.com www.changh | 9999热精品| 久久色五月| 色婷婷XXXXX| 成人午夜天| cc精品国产性传播| 台湾综合丁香五月蜜桃| 婷婷五月精品中文字幕| 五月天激情国产综合婷婷婷| 婷婷五月色综合| 五月伊人综合| 五月天丁香成人社| 狠狠色婷| 99国产精品白浆在线观看免费| 天天日天天干天天天| 日本三级黄色大片| 久久婷婷综合拍| 色五月天在线观看| 九色无码| www.丁香五月| 丁香五月AV在线| 丁香花成人区| av操B网站| 综合久久综合| 色五月五月婷婷| 这里只有精品视频国产| 五月天色色网站| 国产av网| 玖玖婷婷色欲| 色五月激情五月| 九色婷婷| 五月丁香婷婷婷激情爱爱| 精品婷婷五月天| 夜夜躁婷婷AV| 大香蕉人人网| 玖玖玖婷婷婷| 丁香五月天社区婷婷| 亚洲色热| www.色综合| 欧洲一区二区| 久久久五月五丁香| 婷婷内射视频在线| 九九热精品视频在线观看| 26uuu国产精品| 超碰狠狠操| 99re久热只有精品6在线直播.com| 伊人久久丁香狠狠婷婷综合香蕉 | 九九大香蕉黄色影院| 九九九九九九热| www.夜夜操| 91人人爽狠狠狠| 婷婷亚洲五月| 五月婷婷婷丁香播| 五月婷婷色| 狠狠色噜噜色狠狠狠综合久久成人波| 色五月丁香五月婷婷五月成人网| 婷婷情色激情| 五月天婷婷激情在线色图| 天天操夜夜肏| 五月天婷婷爱| 91九色视频在线观看| 婷婷五月天亚洲| 天天干com| 婷婷六月天亚州| 天天色综合色| 狠色色狠网| 日日操天天| 色操b| 五月天色婷婷基地| 狠狠做深爱婷婷久久综合一区| 丁香六月亚洲综合| 色色com| 五月天播播中文字幕 | 色五月丁香五月| 中文字幕婷婷| 5月丁香综合网| 婷婷深爱五月天在线| 综合xx网| 天天色宗合| 丁香五月天天高清在线| 丁香五月婷婷网| 天天干天天干天天| 伊人久久婷婷| 婷婷五月丁香99| 婷婷色色宗合网| 日本全黄一级999| 色婷婷瘦婷婷日韩| 五月婷六月综合在线观看| 五月天激情综合网站| 婷婷激情五月天激情在线| 久久久久综合激动五月天| 婷婷五月天深爱| 亭亭五月天成人| 激情五月天社区| 伊人网大香| 六月丁香五月天| 午夜69成人做爰视频| 大香伊人久色| 免费亚洲婷婷中文字幕| 五月婷婷影视| 日韩操逼大片| 色啪久 | 日本一级一级一级一级| 红桃91人妻爽人妻爽| 天天操五月天| 五月天婷婷激情干干| 天天免费日日夜夜夜夜| 99久久激情视频| 最新无毒无码AV| 婷婷刺激综合| 九九热这里只有精品9| 五月婷婷六月丁香在线| 99在线精品免费视频| 色爱爱综合网| 五月婷高清视频| 激情五月少妇| 五月色情| 99在线观看| 99re在线这里只有精品视频首页| 青草激情综合| 97五月婷婷| 六月丁香激情最新更新| 色色色婷婷五月天| 九九视频在线观看视频在线播放69| 91婷色| 五月婷婷插一插| 色在线99| 亚洲热久| 狠狠插狠狠| 色五月综合激情| 91av视频| 思思久久96热在精品国产,| 狠狠干在线| www,999日本色| 玖玖色综合网| 九九视屏| 色色色五月天激情资源| 久热久色| 丁香六月婷| 在线观看免费视频| 丁香五月AV综合| 成人综合视频在线| 91干在线| 欧美色频| 九九av在线| 色丁香五月婷婷在线| 狠狠干综合| 欧美综合五月丁香六月婷| 激情婷婷网| 亚洲精品又粗又大又爽A片| 91九色无码日韩| 日日夜夜婷婷| 中文字幕在线不卡视频| 五月婷婷 激情五月| 日日躁夜夜躁狠狠久久AV| 人妻av在线| 91超碰在线播放| 91碰九色| 婷婷五月免费视频| 天堂久久婷婷| 99啪啪视频| 97久人人| 成人短视频在线| 99热加勒比| 色婷婷五月天视频网站| 五月丁香花视频| 99激情视频| 99精品偷拍视频| 激情开心五月天婷婷基地丁香社区| 国精产品一区一区三区免费视频| 99精品在| 9|人妻人人操| 激情五月色播五月| 成人午夜天| 99精品网| 思思99热| 白人荫道BBWBBB大荫道| 色婷婷综合综合网| 色色综合色| 久久五月天婷婷| 色5月婷婷| 婷婷操逼| 伍月激情天| 成人中文网| 亚洲看av的网站| 3p九色在线| 丁香色婷婷五月天| 成人 在线 日韩| 久久久WWW| 婷婷成人网五月天| 综合色色五月| 天天做天天爽| 久久机热这里只有精品免费视频| 亚洲12p| 色爱终和网| 色综合久久88色综合天天| 九九性视频| 97资源碰碰在线| 五月天综合婷婷| 婷婷天天舔| 超碰妻人人| 91九色成人原创视频| 五月丁香婷婷综合| 噜综合| 婷婷五月花| 五月五婷婷| 丁香婷婷五月六月久久| 日本不卡一区二区三区| 色五月婷婷老师| 91综合在线| 天天揷综合网| 五月婷婷狠狠干| 狠狠色婷婷在线| 97碰碰久久| 991精品在线视频| 久久丁香婷婷五月天| 色五月丁香91| 亚洲视频99| 欧美草久久五月天91| 狠狠狠狠狠狠色| 日比网免费国产| 天天日 天天草| 色五月综合婷婷久久综合婷婷久久综合婷婷久久综合婷婷久久 | 免费黄色片子| 一区操| 99色在线视频| 深爱五月天| 五月丁香拍拍激情综合| 久久3p| 久久久久久五月天| 99综合视频| 色噜噜婷婷| 97亚洲色 torrent magnet| www.91五月| 色五月六月| 五月婷婷开心综合| 人人爽人人爽人人爽人人爽| 色五月开心婷婷| 婷婷综合在线视频| 日韩一级淫乱片一区二区三区| 色色吧综合| 女高怪谈在线观看| 久久精品66| 亚洲小视频免费看| 涩五月婷婷| 九九热99在线视频| 婷婷色资源| 丁香六月婷婷综合| 涩五月婷婷| 天天色视频| 婷婷五月天成人影片| 亚洲啪啪视频| 六月丁香五月婷婷| 欧美丁香五月| 丁香五月激情啪啪| 亚洲色婷婷五月| 另类小说婷婷色| 日日噜狠狠色综| www.五月婷婷| 色五月激情综合网| 丁香六月啪| 97日在线视频| A在线观看| 久久大香免费| 婷婷五月丁香香蕉| 丁香 亚洲 久久| 九九精品re免费视频| 亚洲国产精品成人午夜| 黄色中文字目| 97婷婷五月丁香| 久久5 9视频免费观看| 国产精品扒开腿做爽爽爽A片唱戏 亚洲爆乳无码精品AAA片蜜桃 | 中文字幕成人日韩| 国产婷婷五月| 色九月欧美| 黑人无码一区| 成人AV在线网站| 亚洲综合五月天婷婷丁香| 婷婷五月天高清无码| 日日狠狠久久偷偷四色综合免费| 夜夜夜夜夜操| 五月天狠狠色| 狠狠狠狠狠狠| 久久se 综合网| 综合久久五| 成人国产网| 婷婷94s| 九九99九九精品视频| 国产FREESEXVIDEOS性中国| 色综合色综合网| 疯狂做受XXXX高潮A片| 国产av天堂| 综合色色五月| 国产黄色一级片| 五月综合激情| 色色色在线播放| 午夜不卡成人一区二区| 情婷婷五月天| 五月天综合久久| 99无码精品| 亚洲日韩久久婷婷伊人| 影音先锋男人资源站一区二区| 99久精品视频| 99国产小视频免费观看| 精品51XX| 亚洲AV成人在线| 欧美黑人巨大性生话| 午夜美女人啪最红院| 丁香五月婷婷丫| 天天夜天天色天天| 五月婷婷丁香综合| 激情性爱五月天网页| 996黄色片| 五月婷中文字幕| 深爱五月激情网| 婷婷综合伊人丁香| 色色色色色色色色综合网| 玖玖在线视频| 大香av| 天天做综合| 五月久久丁香| 久青草影院| 丁香五月激情啪啪综合| 久热这里只精品| 婷婷丁香综合| 五月丁香综合激情| 五月丁香黄色| 丁香丝袜五月| 99热伊人| 国产三级片91| 欧美激情综合色综合色| 激情五月婷婷五月| 狠狠色五月| 丁香成人综合| 丁香婷婷人妻| 五月丁香六月婷婷啪啪| 91久久日日| 九月影院義母在线播放| 天天干天天射色综合| 天天噜噜| 婷婷五月综激情| 五月天成人在线| 婷婷97| 欧美婷婷丁香五月| 人妻操在线看| 噼里啪啦在线观看免费完整版视频| 激情av在线| 激情网五月婷婷| 五月天综合网| 五月天婷婷色在线视频免费观看| 色婷婷久久| 日韩三级高清无码| 五月天色五月天| 日韩成人精品中文字幕| 操人精品| 欧美色性色好| 97久操| wwwxxx五月婷婷小说| 91色久| 色 五月 天 婷婷 丁香 九月| 狠狠干狠狠干狠狠干狠狠干| 激情五月婷婷综合| 91干在线| 丁香五月婷婷激情尤物| 91在线资源| 天天日天天干天天爱| 五月伊人网| 激情五月丁香亭亭| 免费色婷婷| 伊人狠狠干| 极品人妻VIDEOSSS人妻| 激情五月婷婷网在线观看| 午夜免费试看| 欧洲激情网站| 九九色综合| 久久综合网免费视频| 色五月激情五月开心五月| 日韩av在线电影| 99ri精品在线| 久久久99久久| 丁香六月婷婷久久综合| 色欲Av五月天| 人妻第九页| 婷婷五月色亚洲| 99热最新国内| 婷婷激情小说| 综合大香蕉| 九九热在线99| 丁香婷婷六月激情| 丁香五月婷婷社区| 噜噜色婷婷| www.久久爱.c n| 日本色色网站| 精品久久婷婷五月天| 色五月亚洲| 99精品7| 九九色插| 噜噜色五月| 色五月综合资源推荐| 色五月婷婷综合在线| 亚洲精品国产setv| 开心丁五月| 亚洲春色奇米影视| 天天爽天天干| 91啪啪| 韩国真做片在线观看| 综合热无码| 激情婷婷五月在线合集| 色婷婷综合亚洲| 欧美在线视频99| 精品无码久久久久久久久| 婷婷伊人五月| 97婷婷狠狠| 狠狠综合| 色色色热| 日日操夜夜爽天天天| 五月天久久小说| 婷婷 伊人 久久| www.粉嫩av.com| 天天干在线播放| 五月天丁香成人| 人妻操逼| 热99玖玖99玖玖99九九| 欧美日本另类| 久久99热只有精品| 色九月综合网| 久热婷婷| 国产精品国产| 丁香五月婷婷亚洲综合精品在线| 丁香五月Av| 亚洲国产成人在线| 五月丁香亭亭A片| 99热综合| 天天日天天草| 天天插轮理| 欧美久久网| 综合福利网| 婷婷精品视频| 婷婷狠狠操| 天天色爽| 99精品久久久久久久婷婷| 久草婷婷在线| 人人操AV| 久久久久久欧美精品se一二三四| 99热精品在线播放| 天天做天天爱天天爽在| 久久久久激情| 亚洲国产另类av| 国产在线aaa片一区二区99| 久久久精品AV| 色五月丁香五月天| 人妻操在线看| 丁香五月婷婷呀| 99操中文视频| 色天堂97| 婷婷亚洲久久| 色色色1网址| 免费观看全黄做爰的视频| 五月婷亚洲精品AV天堂| 五月丁香激情综合网| 婷婷成人小说综合| 91dy.av| 99久久66| 这里只有精品视频在线| 久久WW| 天天精品视频免费观看| 99热这里只有精品 搜| 色色啊| 欧亚洲在线高清视频| 亚洲综合一区二区| 影音先锋男人资源站一区二区| 久久五月婷综合| 国产AV一区二区三区日韩| 五月丁香六月激情欧美综合| yellow视频在线观看91| 丁香 亚洲 久久| www夜夜操| 六月丁香六月婷婷欧美| 五月丁香在线婷婷美女| 99av视频| 少妇达人正片在线播放_ikun_福利吧| 999影院成人在线影院| 欧美激情五月| 综合色五月| 久久狠狠干| 亚洲综合五月天| 久久久无码精品成人A片小说 | 六月婷婷色综合| 五月激情综合网| 激情五月婷婷| 日本熟妇乱妇熟色A片蜜桃| www.久久久久| 图片区 小说区 区 亚洲五月| 日本九九九九| 亚洲乱码日产精品BD| 亚洲网综合在线| 好吊兆人妻| 久热这里只有精品99re | 26uuu最新地址| 五月天啪啪啪| 日韩九区| 国产JK精品白丝AV在线观看| 丁香五月之久操视频| 久热A片| 五月婷久草| 啪啪操操| 综合五月草| 激情亚洲色图片丁香综合| 日撸夜撸日操| 色玖玖导航| 久热婷婷| 亚洲国产黄色电影| 九色91视频| 熟女激情网| 婷婷五月天婷婷| 色婷婷AV在线| 天天射影院| 色444综合网| 久久久97| 五月婷婷激情综合拍| 婷婷五月天视频免费在线观看| 操久久网| 婷婷丁香六月天| 婷婷综合日本| 激情五月天综合图片小说网站| 五月激情网综合| 成片免费播放| 日本综合九九| 97色婷婷| 婷婷色激情五月天| 天天天干夜夜夜操| 一本九九色| 五月色婷婷在线观看| 色情综合网| 538在线精品| 婷婷狠狠香蕉综合| www.色婷婷| 丁香五月婷婷综合啪啪| www99久久| 亚洲久久婷婷| 97人人草| 天堂久久大香蕉| 色色色精品无码区| 99热丁香| 影音先锋男人AV资源站| 玖热精品综合视频| 色婷婷五月天激情在线观看| 婷婷丁香久久| 欧美性猛交99久久久99| 操你av| 99热只有| 超级黄色片| www开心激情网| 丁香五月香蕉| 91色在线| 五月天婷婷爱| 激情九月婷婷九月| 五月天合网| 9久国产| 久久久久久9热不雅视频| 26UUU| 影视av久久久噜噜噜噜噜三级| 91se精品国产| 丁香婷婷激情五月色| 伊人久久婷婷| 黄色成人网站在线播放| 婷婷五月天开心网| 丁香六月婷婷激情| 好好干av| 欧美性生交XXXXX无码小说| 99ri精品| 色欲五月婷婷| 五月天另类小说| 69精品人人人人| 玖热精品综合视频| 亚洲人妻AV| 婷婷久久五月天丁香| 五月婷婷开心五月| 久久九九99.www| site:ornaments52.com| 丰满少妇乱A片无码| WWW.激情| 91久久久久久| 99色看这里只有精品| 免费视频无码| 精品99这里有| 丁香五月天激情综合| 亚洲成人网站在线观看| 久久女婷| 99综合色色色| 91九色精品熟女内射| 五月激情五月丁香| 日本色婷婷| 五月天婷婷色播综合在线| 国产日比| 久久视这里只有精品| 亭亭玉月丁香| 人人舔人人色人人高潮| 国产偷人爽久久久久久老妇APP| 97丁香花五月天激情小说| 五月天丁香| 激情五月激情综合网一级丸片| 五月丁香综合激情| 丁香久色| 亚洲无码影片| 色屌丝中文字幕| 久久免费操| 色五月人妻| 欧美婷婷五月激情| 午夜]香婷婷深深爱| 中文AV网站| 婷婷五月天Av| 丁香色色网| 五月婷婷色| www.五月瑟| a在线免费v| WWW,五月| 狠狠干在线视频| 9精品国产在热久久| 激情五月婷婷视频一区二区三区| 综激情网| 在线观看免费视频| 色五月婷婷激情| 久久九九玖玖| 色五月激情五月| 另类五月激情| 亚洲综合色色| 精品一二三区久久AAA片| 青草青青草| 亚洲综合色色| 激情婷婷狠狠干综合| 婷婷深爱五月天| 日本综合色图| 色色网站日本91| 99视频在线播放大全| 五月婷婷丁香深深爱| 亚洲成人日韩无码精品| 日韩 中文 欧美| 色婷婷色五月色丁香| 久久精品五月| 狠狠五月天| 色情五月婷婷| site:xmssd.com| 99热亚州综合| 色五月激情网| 激情五月天偷拍综合网| 91精品电影18T| 吾爱AV导航| 色婷婷五月综合| 人人操av| 五月亭亭六月激情| 五月丁香激情怕怕| 丁香情色五月| 97色色视频| 五月天色五月| 啪啪激情网站| 精品久色| 婷婷综合在线播放| 人妻第九页| 五月丁香人妻| 婷婷五月天网| 亭亭社区五月天| 五月婷婷六月丁香免费| 超色欲天天| 日韩无码AV电影网站| 大香蕉av在线| 停停五月色宗合| 婷婷伊人久久综合| ri电影在线| 婷色五月天| 激情婷婷网| 日韩99无码| 久久免费精彩视频| 久久只有18视频| 五月婷婷免费在线视频| 五月婷婷综合色啪首页| 丁香六月激| 五月天婷婷綜合院| 丁香五月婷婷综合91| 婷婷色情 | 激情五月综合亚洲另类| 九九RE视频在线精品| www.激情五月| 婷婷婷婷婷开心无码播放| tingtingzonghewang| 色色精品色| 92久久| 亚洲综合另类| 色噜久| 色五月婷婷大香蕉| 丁香六月婷婷开心婷婷网| 国产成人av在线| 97色啪| 懂色av蜜臀av粉嫩av永陈冠希| 99九九这里有免费视频| 中国女人内射6XXXXX| h在线看免费版在线看| 色999五月色| 激情综合网五月婷婷| 99热国产| 天天综合在线网| 久久综合丁香激情五月| 99综合免费视频| 五月丁香色| 91 九色 熟女| 亚洲精品婷婷| 欧美99热| 亚洲乱码日产精品BD| 国产做爰视频免费播放| 99热这里有精品| 丰满少妇猛烈A片免费看观看 | 日本系列_4页_777FP| 色老久久| 欧日韩成人| 色综合色五月| 中文网AV| 啪啪干伊人婷婷| 色情久久久| 大波美女VA网站| 激情综合网,婷婷| 亚洲无码成人性爰网| 精品人妻久久久| 六月丁香深深爱| 99亚洲大片精品永久在线观看 | 伊人婷婷五月| 九九在线这里只有精品视频 | 日本狠狠色| www.久久久久久久| 欧美精品18| A片试看50分钟做受视频| 九九操屄| 99九九中文字幕视频| 五月天堂婷婷| 天天草天天爱| 色色哒五月婷婷六月丁香| 五月久视频| 久久久久9| 大地9中文在线观看免费高清 | 日本不卡五月婷婷丁香| 99热国产免费| 亚洲操B| 日韩ww| www.97干视频| 韩日在线熟女| 亚洲婷婷激情五月天| 啪啪操超碰| 少妇性按摩无码中文A片| 亚洲狠狠丁香婷婷香蕉| 99色在线观看视频| 久热这里只有精品在线观看 | 亚州欧美黄色电影| 综激情网| 日日操日日干| 五月天社区婷婷丁香社区| 99色视频| 亚洲人成网站999久久久综合| 久色网址| 俺去啦综合网| 91人妻PORNY九色大屁股| 91av传媒高清在线视频网| 人人干女人| 色五月视频无码播放| 91热视频色网站| 草了bav视频在线观看| 久久五月婷婷丁香| 五月丁香成人| 99操久久| 97自拍视频网| 久久婷婷网站| 少妇人妻凹凸视频| 97色啪| 噼里啪啦完整版中文在线观看 | 亚洲五月天婷婷在线| 婷婷狠狠干| 六月激情网| 婷婷五月天色网久| 亚洲中文字幕AV| 一本九九色| 99热思思在线观看| 亚洲在线操| 在线亚洲综合| 狠狠狠狠狠狠草| 97碰在线| 久久婷婷六月综合综合| 丁香婷婷六月天| 九月丁香| 久久综合播放| 狠色色狠网| 校花娇喘呻吟校长陈若雪视频 | 亚洲综合另类| 久久伦乱| 五月婷婷五月丁香| 9九九久久精品无码专区| 久久九九怡红院| 超碰在线中文字幕| 1级欧美日韩| 日日干日日色| 欧美色图天堂网| 91色在线| 九九热思思| 桃色五月婷婷| 婷婷伊人激情婷婷| 99精品综合| 五月天婷婷久久| 国产精品色婷婷99久久精品| www.一起草av| 五月开心深爱激情网| 色狠狠色综合久久久绯色aⅴ影视| 精热在线综合网| 97人人操人人干| Av九九| 91视频精品99| 成人视频在线免费播放| 狠狠干,狠狠操| 九九激情视频| 亚洲综合激情五月久久| 色爱综合五月| 天天日天天干天天爽| 青青操日本摸摸看看| 不卡影院午夜理论片| 亚洲网在线观看| 五月丁香婷中文| 亚洲三A| 人妻尝试久久久久久久久久久久| 亚洲无AV在线中文字幕| 丁香激惜男女| 久久婷婷六月综合| 综合亚洲六月婷婷在线| 六月色色| 午夜丁香| 五月丁香影院| 丁香婷婷五月天色综合| 开心激情网五月天| 五月丁香在线视频观看| 中文字幕日产A片在线看| 五月丁香天堂网婷婷| 四川女人毛多水多A片| 青青草视频福利| 超碰免费电影| 五月激情天| 六月99天天婷婷激情综合| 亚洲AV免费在线| 五月天免费色| 久久久久久久久18久久| 日日杆天天| 91vip在线观看| 色色色五月婷婷| 天天cha成人综合网| 五月婷婷欧洲| 99操免费视频| 久久免费精品小视频| 色色亚洲| 精品三区影院| 97黑人精品区| 婷婷五月综合在线| 丁香六月亚洲综合| 玖玖激情五月天| 丁香六月婷婷| 日撸夜撸日操| 99ri精品在线| 国产亚洲色婷婷久久99精品91| 久久成人综合五月天| 天天肏天天肏| 色综合色| 五月停停丁香| 五月丁香花视频| 天天做天天爱天天爽| 亚城区在线| 五月丁香啪啪激情| 婷婷五月欧美综合| 九九热re99re6在线精品| 久久婷婷成人视频| 亚洲啪啪精品| 国产精品色婷婷久久久精品| 综合激情伊人影视在线| 午夜伊人大香蕉| www.99热| 99久久99视频只有精品| 五月丁香婷婷狠狠操| 爆乳熟妇一区二区三区爆乳照片| 加勒比色色| www激情网站| 国产肥白大熟妇BBBB视频 | 激情四射五月天| 91婷婷五月天嫩女| 人人玩人人橾| 激情五月婷婷啪啪| 免费看欧美成人A片无码| 丁香五月天激情综合| 国产99精品免费视频| 亚洲爱婷婷| 国产精品A成V人在线播放| 久久婷婷五月天激情四射| hd五月婷婷在线| 丁香婷婷五月激情| 丁香色婷婷色手机免费在线| 色99热| 色综合色综合网| 天天色天天爽| www999日韩精品| 色色999三级片| 六月丁丁香| 色在线99| 亚洲激情.com| xx色综合| 91久久婷婷| 欧美123区免| 精品少妇人妻AV无码专区偷人| 久久人操| 色综合五月| 天天舔天天摸视频| 五月丁香婷婷无码中文| 五月天天堂久久| 九热av| AV成人在线网站| 色色色综合| 91久热| 欧美超级视频97| se99视频| 五月天激情久色| 丁香五月婷婷性爱| 99热综合网| 超碰高清在线| 激情五月婷婷色综合| 色婷婷丁香五月天| 五月天国产| 战争与艾拉电影免费观看| 欧美色婷婷| 超碰成人电影| 国产老熟妇亲子乱对白| 亚洲AV无码一区二| 久久99免费视屏| 色色草97| 美女被肏网站在线看| 五月婷视频| 岛国在线观看91| 亚洲亚洲人成综合网络| 欧美成人AAA片一区国产精品| 日本va欧美va国产激情| 九九热超碰| 99热九九热| www.minyis.com【JT】实力收量可预付QQ2101460746 | www色五月| 婷婷九月| 最新无码专区| 97超碰在线观看免费| 五月婷婷综合社区| 久99久视频| 激情丁香久久| 色五月天激情| 久久性爱视频网站| 久操福利| 国产亚洲99久久精品| 国外亚洲成AV人片在线观看| 激情性爱网站| 色99在线| 91超级碰| 国产古装妇女野外A片| 国产午夜精品一区二区三区四区 | 色色亚洲五月天| 色综合天天综合成人网| 婷丁香五月天| 久99久视频| 天天爽天天操| 日韩av一区二区在线/日产精品久久久| 九九九九精品精| AV在线二十六页| 99操不停| 2022人人操人人看| 久操福利| 99热精品在线| 欧美日韩91| 亚洲婷婷丁香五月天激情小说| 亚洲五月天伊人| 思思 热 99| 91九色熟女| 99精品在线| 日日夜夜九九| 97在线/亚洲| wwW天天干| 色综合色色色色色| 色五月大| 日本色婷婷| 丁香五月瑟瑟| 4399人妻无码久久久| 九九热这里只有精品556| 天天做综合网色综合| 婷婷天天婷婷天天澡| 91久久| 婷婷成人基地| 色婷婷五月丁香色| 精品久9| 久久五月婷婷视频| 精品视频这里只有精品| 日韩色情亚洲五月天婷婷| 婷婷丁香花五月天| 久久视频在线视频| 五月婷婷激情日本| 色五月丁香总合网| www99热| 亚洲九九视频| 婷婷五月激情在线| 久操婷婷| 99愛国产| 超碰成人免费| 国产av网| 激情五月婷黄版| 久热这里只有精品视频免费观看| 五月天堂色| 五月婷狠狠| AV操逼网| 天天天天天操| 六月丁香网| 五月婷婷色色网址| 色就是色婷婷五月亚洲激情| 欧洲高清免费久久| 超碰在线看| 久草婷| 九九热10| 五月天开心网| 久久色六月| 婷婷五月激情四月综合 | 久色大香蕉| 天天色爽| 婷婷射综合| 久久久五月天婷婷| 久一这里有精品国产| 激情av在线| WWW.HENHENL.| 婷婷色5月天在线。| 色五月激情五月天| 亚洲色热| 91久久综合亚洲噜噜成人在线 | 激情婷婷色色| 亚洲精品成人片在线播| 我爱婷婷五月天综合88| 婷婷久久大香蕉| 丁香五月婷婷激情完整版| 日韩抽插操逼| 婷婷五月天av| 欧美情月伍月天| 五月天婷婷在线AN| 91成人品| 久久曰曰| 丁香五月天婷婷在线视频| 99热老网站| 日韩ac不卡无码| 激情综合久久| 九热视频| 开心激情综合| 五月婷婷激情四季| 国产99久久久国产精品免费看| 思思热99er在线视频| 国产3p露脸普通话对白|