99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

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

Delphi 12.3 THttpServer實(shí)戰(zhàn):構(gòu)建高性能HTTP服務(wù)端與POST請(qǐng)求處理指南

Delphi 12.3 THttpServer實(shí)戰(zhàn):構(gòu)建高性能HTTP服務(wù)端與POST請(qǐng)求處理指南 簡(jiǎn)介本資源是一套基于Delphi 12.3開(kāi)發(fā)的HTTP服務(wù)端與POST請(qǐng)求處理的完整示例工程面向Delphi中高級(jí)開(kāi)發(fā)者適用于構(gòu)建輕量級(jí)本地API服務(wù)、嵌入式Web接口或IoT設(shè)備通信模塊等場(chǎng)景。壓縮包共含16個(gè)文件涵蓋可執(zhí)行程序2個(gè)exe、核心單元源碼pas/ddp/dfm、編譯產(chǎn)物dcu、項(xiàng)目配置cfg/dof/dpr、資源文件res及XML配置文檔全面覆蓋從設(shè)計(jì)、編碼、編譯到運(yùn)行的全鏈路開(kāi)發(fā)要素。資源大小為37.23MB結(jié)構(gòu)清晰便于快速理解TIdHTTPServer組件在Delphi 12中的實(shí)際集成方式與POST數(shù)據(jù)解析邏輯。已有45人學(xué)習(xí)下載讀者可直接運(yùn)行示例程序觀察HTTP服務(wù)啟動(dòng)、路由響應(yīng)及文件接收行為并通過(guò)源碼深入掌握請(qǐng)求體解析、JSON/Form數(shù)據(jù)提取、異常處理及跨版本兼容性適配等關(guān)鍵實(shí)踐細(xì)節(jié)。1. 項(xiàng)目背景與核心價(jià)值最近在整理一個(gè)遺留的Delphi項(xiàng)目需要實(shí)現(xiàn)一個(gè)輕量級(jí)的HTTP服務(wù)端用來(lái)接收一些設(shè)備上報(bào)的數(shù)據(jù)。一開(kāi)始想著用現(xiàn)成的框架但考慮到部署環(huán)境的復(fù)雜性和對(duì)性能的極致要求最終還是決定回歸Delphi用自帶的THttpServer控件來(lái)搭建。這個(gè)決定讓我重新審視了Delphi 12.3在Web服務(wù)開(kāi)發(fā)上的能力特別是處理HTTP POST請(qǐng)求這個(gè)看似基礎(chǔ)、實(shí)則暗藏玄機(jī)的環(huán)節(jié)。網(wǎng)上關(guān)于Delphi HttpServer的資料要么是遠(yuǎn)古版本的要么語(yǔ)焉不詳尤其是處理表單數(shù)據(jù)、JSON POST這些現(xiàn)代Web交互時(shí)總感覺(jué)缺了臨門(mén)一腳的示例。所以我把這次實(shí)戰(zhàn)中搭建的HttpServer服務(wù)端以及配套的、用于測(cè)試各種POST請(qǐng)求的客戶端源代碼打包成了一個(gè)資源包。這個(gè)包的核心價(jià)值在于它不是一個(gè)簡(jiǎn)單的“Hello World”演示而是一個(gè)可直接用于生產(chǎn)環(huán)境參考的、處理了多種POST數(shù)據(jù)格式的完整范例。無(wú)論是處理application/x-www-form-urlencoded表單、multipart/form-data文件上傳還是解析application/json的RESTful API請(qǐng)求你都能在里面找到清晰的實(shí)現(xiàn)路徑和避坑指南。對(duì)于還在使用Delphi進(jìn)行工業(yè)控制、數(shù)據(jù)采集、內(nèi)部工具開(kāi)發(fā)的同行來(lái)說(shuō)這能省去大量重復(fù)造輪子和調(diào)試協(xié)議的時(shí)間。2. Delphi 12.3 THttpServer控件深度解析Delphi的THttpServer控件位于System.Net.HttpServer單元它是一個(gè)基于事件驅(qū)動(dòng)的、阻塞式的HTTP/1.1服務(wù)器實(shí)現(xiàn)。很多人一聽(tīng)到“阻塞式”就覺(jué)得性能不行這其實(shí)是個(gè)誤解。在連接數(shù)可控、追求極致穩(wěn)定和低延遲的工業(yè)或內(nèi)部應(yīng)用場(chǎng)景中這種簡(jiǎn)單的模型反而更可靠資源消耗也更可預(yù)測(cè)。2.1 核心架構(gòu)與工作模式THttpServer的核心是OnCommandGet和OnCommandOther事件。在早期版本通常用OnCommandGet處理GET請(qǐng)求用OnCommandOther處理POST等其他方法。但在Delphi 12.3中更推薦的做法是主要使用OnCommandOther事件并在其內(nèi)部根據(jù)ARequest.Method方法來(lái)區(qū)分GET、POST等所有HTTP動(dòng)詞。這樣做的好處是邏輯統(tǒng)一便于管理。它的工作線程模型是每個(gè)接入的客戶端連接服務(wù)器會(huì)為其分配一個(gè)獨(dú)立的工作線程。該線程會(huì)一直阻塞直到處理完當(dāng)前請(qǐng)求并返回響應(yīng)或者連接超時(shí)。這意味著如果你的某個(gè)請(qǐng)求處理函數(shù)非常耗時(shí)它會(huì)獨(dú)占一個(gè)線程導(dǎo)致該線程無(wú)法處理其他連接。因此關(guān)鍵的設(shè)計(jì)原則是在OnCommandOther事件處理函數(shù)中邏輯應(yīng)盡可能快速避免長(zhǎng)時(shí)間操作。對(duì)于耗時(shí)的任務(wù)如復(fù)雜的數(shù)據(jù)庫(kù)查詢、文件處理應(yīng)該將其放入隊(duì)列由后臺(tái)線程異步處理然后通過(guò)回調(diào)或狀態(tài)查詢的方式返回結(jié)果。2.2 關(guān)鍵屬性與實(shí)戰(zhàn)配置創(chuàng)建一個(gè)穩(wěn)定可用的HttpServer以下屬性的配置至關(guān)重要// 創(chuàng)建服務(wù)器實(shí)例 FHttpServer : THttpServer.Create(nil); try with FHttpServer do begin // 綁定地址和端口。0.0.0.0表示監(jiān)聽(tīng)所有網(wǎng)絡(luò)接口 Bindings.Add(0.0.0.0, 8080); // 服務(wù)器名稱會(huì)出現(xiàn)在HTTP響應(yīng)頭Server字段中可自定義或留空 ServerName : MyDelphiServer/1.0; // 連接超時(shí)時(shí)間毫秒。客戶端在此時(shí)間內(nèi)未發(fā)送請(qǐng)求連接將被關(guān)閉。 // 對(duì)于設(shè)備上報(bào)場(chǎng)景不宜設(shè)置過(guò)短建議30-60秒。 ConnectionTimeout : 30000; // 請(qǐng)求體最大尺寸字節(jié)。這是防止惡意超大請(qǐng)求導(dǎo)致內(nèi)存溢出的關(guān)鍵 // 必須根據(jù)業(yè)務(wù)需求明確設(shè)置。例如文件上傳設(shè)為50MB50 * 1024 * 1024 MaxRequestBodySize : 52428800; // 啟用線程池管理推薦。True時(shí)服務(wù)器會(huì)復(fù)用已完成任務(wù)的線程提升性能。 UseThreadPool : True; // 線程池最小和最大線程數(shù)。需要根據(jù)預(yù)期的并發(fā)量調(diào)整。 // 初始值可以設(shè)為CPU核心數(shù)最大值為預(yù)期最大并發(fā)數(shù)但不宜過(guò)高。 ThreadPoolSize : TThreadPoolSize.Create(4, 50); // 注冊(cè)請(qǐng)求處理事件 OnCommandOther : HandleCommandOther; // 也可以選擇性處理異常請(qǐng)求 OnException : HandleServerException; Active : True; // 啟動(dòng)服務(wù)器 end; except on E: Exception do Log(服務(wù)器啟動(dòng)失敗: E.Message); end;這里最容易踩坑的就是MaxRequestBodySize。如果不設(shè)置默認(rèn)值可能很小一旦遇到上傳文件的POST請(qǐng)求服務(wù)器會(huì)直接返回413 Request Entity Too Large錯(cuò)誤。我一開(kāi)始就忘了設(shè)調(diào)試了半天才發(fā)現(xiàn)問(wèn)題根源。3. 全面攻克HTTP POST請(qǐng)求處理處理POST請(qǐng)求的難點(diǎn)不在于接收而在于如何正確、高效地解析出請(qǐng)求體Body中的數(shù)據(jù)。HTTP協(xié)議本身只負(fù)責(zé)傳輸字節(jié)流如何解讀這些字節(jié)流取決于Content-Type請(qǐng)求頭。我們的服務(wù)器必須能識(shí)別并處理常見(jiàn)的幾種類型。3.1 解析 application/x-www-form-urlencoded這是HTML表單默認(rèn)的提交格式數(shù)據(jù)格式為key1value1key2value2并且進(jìn)行了URL編碼。在THttpServer的事件參數(shù)中我們可以直接獲取到解析好的內(nèi)容。procedure TMainForm.HandleCommandOther(AContext: TIdContext; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo); var ParamValue: string; i: Integer; begin if ARequestInfo.Command POST then begin // 首先檢查Content-Type if Pos(application/x-www-form-urlencoded, ARequestInfo.ContentType) 0 then begin // 方式1通過(guò)Params屬性直接獲取已自動(dòng)解析 ParamValue : ARequestInfo.Params.Values[username]; if ParamValue then Log(收到用戶名Params: ParamValue); // 方式2遍歷所有參數(shù) Log(所有表單參數(shù):); for i : 0 to ARequestInfo.Params.Count - 1 do Log( ARequestInfo.Params.Names[i] ARequestInfo.Params.ValueFromIndex[i]); // 構(gòu)建響應(yīng) AResponseInfo.ContentText : {status: ok, message: Form data received.}; AResponseInfo.ContentType : application/json; AResponseInfo.ResponseNo : 200; // OK end; end; end;注意TIdHTTPRequestInfo.Params屬性在application/x-www-form-urlencoded類型下會(huì)自動(dòng)解析。但如果你同時(shí)處理GET和POST需要注意Params也會(huì)包含URL查詢字符串?后的參數(shù)。在純POST表單處理時(shí)這通常不是問(wèn)題。3.2 解析 application/json (RESTful API)這是目前前后端交互和物聯(lián)網(wǎng)設(shè)備上報(bào)最常用的格式。THttpServer不會(huì)自動(dòng)解析JSON我們需要從原始請(qǐng)求流中讀取。procedure TMainForm.HandleCommandOther(AContext: TIdContext; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo); var ContentStream: TStream; Bytes: TBytes; RawJson, DeviceID, SensorValue: string; JsonObj: TJSONObject; begin if (ARequestInfo.Command POST) and (Pos(application/json, ARequestInfo.ContentType) 0) then begin ContentStream : ARequestInfo.PostStream; if Assigned(ContentStream) then begin // 將流內(nèi)容讀取到字符串 SetLength(Bytes, ContentStream.Size); ContentStream.Position : 0; ContentStream.ReadBuffer(Bytes[0], ContentStream.Size); RawJson : TEncoding.UTF8.GetString(Bytes); try JsonObj : TJSONObject.ParseJSONValue(RawJson) as TJSONObject; if Assigned(JsonObj) then try DeviceID : JsonObj.GetValue(device_id).Value; SensorValue : JsonObj.GetValue(value).Value; Log(Format(設(shè)備%s上報(bào)數(shù)據(jù): %s, [DeviceID, SensorValue])); // 處理業(yè)務(wù)邏輯... // 返回JSON響應(yīng) AResponseInfo.ContentText : {code: 0, msg: success}; AResponseInfo.ContentType : application/json; AResponseInfo.ResponseNo : 200; finally JsonObj.Free; end else begin AResponseInfo.ContentText : {code: -1, msg: Invalid JSON}; AResponseInfo.ResponseNo : 400; // Bad Request end; except on E: Exception do begin Log(JSON解析異常: E.Message); AResponseInfo.ContentText : {code: -2, msg: Server error}; AResponseInfo.ResponseNo : 500; end; end; end; end; end;關(guān)鍵點(diǎn)流的位置PostStream在讀取前務(wù)必將其Position設(shè)置為0否則可能讀不到數(shù)據(jù)。編碼確保使用正確的編碼通常是UTF-8將字節(jié)流轉(zhuǎn)換為字符串。TEncoding.UTF8是最安全的選擇。異常處理JSON解析必須放在try...except塊中??蛻舳丝赡馨l(fā)送非法JSON字符串導(dǎo)致解析崩潰進(jìn)而使整個(gè)工作線程異常退出這是服務(wù)器不穩(wěn)定的重要原因。內(nèi)存釋放TJSONObject等對(duì)象必須記得釋放否則會(huì)造成內(nèi)存泄漏。3.3 處理 multipart/form-data (文件上傳)文件上傳是最復(fù)雜的POST類型。數(shù)據(jù)被分成多個(gè)部分Part每個(gè)部分有自己的頭和體。Delphi的TIdHTTPRequestInfo提供了Files和Params屬性來(lái)簡(jiǎn)化處理但需要正確配置。procedure TMainForm.HandleCommandOther(AContext: TIdContext; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo); var i: Integer; UploadedFile: TIdHTTPUploadFile; SavePath, FieldName, FieldValue: string; SaveStream: TFileStream; begin if (ARequestInfo.Command POST) and (Pos(multipart/form-data, ARequestInfo.ContentType) 0) then begin // 1. 處理上傳的文件 Log(上傳文件列表:); for i : 0 to ARequestInfo.Files.Count - 1 do begin UploadedFile : ARequestInfo.Files[i]; Log(Format( 文件名: %s, 字段名: %s, 內(nèi)容類型: %s, 大小: %d bytes, [UploadedFile.FileName, UploadedFile.FieldName, UploadedFile.ContentType, UploadedFile.Stream.Size])); // 構(gòu)建保存路徑注意安全應(yīng)避免使用原始文件名防止路徑遍歷攻擊 SavePath : .\Uploads\ TPath.GetGUIDFileName(False) ExtractFileExt(UploadedFile.FileName); // 保存文件流 ForceDirectories(ExtractFilePath(SavePath)); SaveStream : TFileStream.Create(SavePath, fmCreate); try UploadedFile.Stream.Position : 0; SaveStream.CopyFrom(UploadedFile.Stream, UploadedFile.Stream.Size); finally SaveStream.Free; end; Log(文件已保存至: SavePath); end; // 2. 處理普通的表單字段 Log(普通表單字段:); for i : 0 to ARequestInfo.Params.Count - 1 do begin FieldName : ARequestInfo.Params.Names[i]; FieldValue : ARequestInfo.Params.ValueFromIndex[i]; // 注意這里獲取的Params可能也包含了文件字段的“文件名”信息但Files列表里的才是文件內(nèi)容。 // 通常我們以Files列表為準(zhǔn)。 if ARequestInfo.Files.FindByField(FieldName) nil then // 如果不是文件字段 Log( FieldName FieldValue); end; AResponseInfo.ContentText : {status: success, files_received: IntToStr(ARequestInfo.Files.Count) }; AResponseInfo.ContentType : application/json; AResponseInfo.ResponseNo : 200; end; end;文件上傳的深坑與解決方案內(nèi)存占用大文件上傳會(huì)完全載入內(nèi)存。務(wù)必設(shè)置合理的MaxRequestBodySize并在生產(chǎn)環(huán)境考慮流式處理到磁盤(pán)的方案但這需要更底層的套接字操作。文件名安全切勿直接使用客戶端提交的UploadedFile.FileName作為保存路徑這可能導(dǎo)致路徑遍歷攻擊如文件名包含..\windows\system32\cmd.exe。應(yīng)使用GUID或時(shí)間戳生成新文件名僅保留原擴(kuò)展名。臨時(shí)文件清理THttpServer或底層庫(kù)可能會(huì)生成臨時(shí)文件需要關(guān)注服務(wù)器運(yùn)行期間的磁盤(pán)空間。4. 配套POST測(cè)試客戶端設(shè)計(jì)與源碼解讀一個(gè)健壯的服務(wù)器離不開(kāi)全面的測(cè)試。我配套編寫(xiě)的測(cè)試客戶端不是一個(gè)簡(jiǎn)單的按鈕點(diǎn)擊而是一個(gè)支持多種POST格式、可自定義Header、能保存請(qǐng)求歷史的工具這對(duì)于調(diào)試API接口至關(guān)重要。4.1 客戶端核心功能模塊客戶端使用TIdHTTP組件發(fā)送請(qǐng)求主要包含以下功能URL與方法選擇支持輸入任意URL選擇GET或POST方法。請(qǐng)求體編輯器一個(gè)多行文本框用于直接輸入JSON、XML或表單格式的字符串。Content-Type選擇下拉框快速選擇application/json、application/x-www-form-urlencoded、text/plain等。自定義請(qǐng)求頭支持添加、編輯、刪除額外的HTTP Header例如Authorization: Bearer token。文件上傳集成multipart/form-data文件選擇與上傳功能。響應(yīng)展示清晰顯示HTTP狀態(tài)碼、響應(yīng)頭和響應(yīng)體支持JSON格式化高亮。歷史記錄將每次成功的請(qǐng)求配置URL、方法、頭、體保存下來(lái)方便重復(fù)測(cè)試。4.2 發(fā)送JSON POST請(qǐng)求的代碼示例procedure TTestClientForm.btnSendJSONClick(Sender: TObject); var IdHTTP: TIdHTTP; RequestStream: TStringStream; ResponseBody: string; begin IdHTTP : TIdHTTP.Create(nil); RequestStream : TStringStream.Create(mmoRequestBody.Text, TEncoding.UTF8); try // 配置HTTP客戶端 IdHTTP.Request.ContentType : application/json; charsetutf-8; IdHTTP.Request.CharSet : utf-8; // 添加自定義頭部 IdHTTP.Request.CustomHeaders.AddValue(X-Api-Key, your-api-key-here); // 發(fā)送POST請(qǐng)求 try ResponseBody : IdHTTP.Post(edtURL.Text, RequestStream); // 顯示結(jié)果 mmoResponseBody.Text : FormatJSON(ResponseBody); // 假設(shè)有JSON格式化函數(shù) lblStatusCode.Caption : 狀態(tài)碼: IntToStr(IdHTTP.ResponseCode); LogRequestToHistory(edtURL.Text, POST, mmoRequestBody.Text, IdHTTP.Request.ContentType); except on E: EIdHTTPProtocolException do begin // 處理HTTP協(xié)議錯(cuò)誤如404, 500 mmoResponseBody.Text : E.ErrorMessage; lblStatusCode.Caption : 狀態(tài)碼: IntToStr(E.ErrorCode); end; on E: Exception do begin // 處理網(wǎng)絡(luò)等其他錯(cuò)誤 mmoResponseBody.Text : 請(qǐng)求失敗: E.Message; end; end; finally RequestStream.Free; IdHTTP.Free; end; end;客戶端開(kāi)發(fā)心得編碼一致性確保TStringStream和TIdHTTP.Request.CharSet使用相同的編碼強(qiáng)烈建議UTF-8否則中文等非ASCII字符會(huì)亂碼。異常細(xì)分EIdHTTPProtocolException是服務(wù)器返回錯(cuò)誤狀態(tài)碼400時(shí)拋出的異常其ErrorCode和ErrorMessage包含了服務(wù)器的響應(yīng)信息這對(duì)于調(diào)試API錯(cuò)誤非常有用。網(wǎng)絡(luò)超時(shí)、連接拒絕等則是其他異常類型。資源釋放TIdHTTP和TStream對(duì)象必須放在try...finally塊中確保釋放特別是在頻繁發(fā)送請(qǐng)求的客戶端程序中。4.3 模擬文件上傳請(qǐng)求procedure TTestClientForm.btnUploadFileClick(Sender: TObject); var IdHTTP: TIdHTTP; PostData: TIdMultiPartFormDataStream; ResponseBody: string; begin if not OpenDialog1.Execute then Exit; IdHTTP : TIdHTTP.Create(nil); PostData : TIdMultiPartFormDataStream.Create; try // 添加文件字段 PostData.AddFile(file, OpenDialog1.FileName, application/octet-stream); // 字段名文件路徑MIME類型 // 添加普通文本字段 PostData.AddFormField(description, 這是一個(gè)測(cè)試上傳的文件); // TIdMultiPartFormDataStream會(huì)自動(dòng)設(shè)置正確的Content-Type ResponseBody : IdHTTP.Post(edtURL.Text, PostData); mmoResponseBody.Text : ResponseBody; lblStatusCode.Caption : 狀態(tài)碼: IntToStr(IdHTTP.ResponseCode); finally PostData.Free; IdHTTP.Free; end; end;使用TIdMultiPartFormDataStream可以極大地簡(jiǎn)化文件上傳客戶端的編碼工作它內(nèi)部會(huì)處理好邊界生成和格式組裝。5. 生產(chǎn)環(huán)境部署與性能調(diào)優(yōu)實(shí)戰(zhàn)將Demo代碼轉(zhuǎn)化為一個(gè)7x24小時(shí)穩(wěn)定運(yùn)行的生產(chǎn)服務(wù)還需要考慮很多工程化細(xì)節(jié)。5.1 日志記錄與問(wèn)題排查沒(méi)有日志的服務(wù)器等于瞎子。一個(gè)基本的日志系統(tǒng)應(yīng)該記錄訪問(wèn)日志客戶端IP、請(qǐng)求時(shí)間、方法、URL、狀態(tài)碼、處理時(shí)長(zhǎng)。錯(cuò)誤日志異常堆棧信息、非法請(qǐng)求內(nèi)容。業(yè)務(wù)日志關(guān)鍵業(yè)務(wù)操作如設(shè)備數(shù)據(jù)接收成功。我通常使用一個(gè)線程安全的日志隊(duì)列工作線程將日志寫(xiě)入隊(duì)列由一個(gè)獨(dú)立的日志線程負(fù)責(zé)將其寫(xiě)入文件或數(shù)據(jù)庫(kù)避免磁盤(pán)IO阻塞請(qǐng)求處理。// 簡(jiǎn)化的線程安全日志示例 procedure LogMessage(const Msg: string); begin TThread.Queue(nil, procedure begin // 在主線程或日志線程中安全地寫(xiě)入Memo或文件 mmoLog.Lines.Add(FormatDateTime(yyyy-mm-dd hh:nn:ss.zzz, Now) - Msg); // 同時(shí)寫(xiě)入文件 WriteToFile(Msg); end); end; // 在請(qǐng)求處理中記錄 LogMessage(Format([%s] %s %s - %dms, [ARequestInfo.RemoteIP, ARequestInfo.Command, ARequestInfo.URI, ProcessingTime]));5.2 連接管理與資源釋放THttpServer在長(zhǎng)時(shí)間運(yùn)行后可能會(huì)出現(xiàn)內(nèi)存緩慢增長(zhǎng)或句柄泄漏。需要關(guān)注全局對(duì)象管理確保在OnCommandOther事件中創(chuàng)建的臨時(shí)對(duì)象如TJSONObject,TMemoryStream都被正確釋放。連接狀態(tài)監(jiān)控可以定期輸出THttpServer的ActiveConnections等屬性監(jiān)控連接數(shù)是否在正常范圍。優(yōu)雅關(guān)閉在程序退出時(shí)先將Active設(shè)為False等待一段時(shí)間讓現(xiàn)有請(qǐng)求處理完畢再銷毀THttpServer對(duì)象。5.3 性能調(diào)優(yōu)要點(diǎn)線程池配置ThreadPoolSize的Max值不是越大越好。設(shè)置過(guò)大在突發(fā)高并發(fā)時(shí)可能創(chuàng)建大量線程導(dǎo)致系統(tǒng)資源緊張和頻繁的上下文切換反而降低性能。需要通過(guò)壓力測(cè)試找到應(yīng)用的“甜蜜點(diǎn)”。請(qǐng)求處理耗時(shí)用GetTickCount或TStopwatch記錄每個(gè)請(qǐng)求在事件處理函數(shù)中的耗時(shí)。如果發(fā)現(xiàn)某些請(qǐng)求特別慢就要考慮優(yōu)化業(yè)務(wù)邏輯或?qū)⑵洚惒交?。?nèi)存池對(duì)于頻繁創(chuàng)建釋放的小對(duì)象如字符串列表、小的內(nèi)存流可以考慮使用對(duì)象池來(lái)減少內(nèi)存分配開(kāi)銷。使用更高效的JSON庫(kù)如果JSON解析是性能瓶頸可以考慮評(píng)估System.JSON以外的第三方庫(kù)如dsjson在某些場(chǎng)景下可能有更好的性能。6. 常見(jiàn)陷阱與終極調(diào)試技巧即使代碼看起來(lái)完美在實(shí)際網(wǎng)絡(luò)環(huán)境中還是會(huì)遇到各種古怪問(wèn)題。以下是我踩過(guò)的一些坑和解決方法。6.1 請(qǐng)求體為空或讀取不完整現(xiàn)象ARequestInfo.PostStream為nil或Size為0但客戶端明確發(fā)送了數(shù)據(jù)。排查首先檢查客戶端發(fā)送的Content-Length頭是否正確。如果這個(gè)頭缺失或值為0THttpServer可能不會(huì)創(chuàng)建PostStream。檢查服務(wù)器端的MaxRequestBodySize是否設(shè)置得過(guò)小導(dǎo)致請(qǐng)求被截?cái)?。在OnCommandOther事件最開(kāi)始記錄下ARequestInfo.RawHTTPCommand和所有請(qǐng)求頭與客戶端發(fā)送的原始數(shù)據(jù)對(duì)比看是否一致。6.2 中文亂碼問(wèn)題現(xiàn)象接收到的JSON或表單數(shù)據(jù)中的中文變成問(wèn)號(hào)或亂碼。解決服務(wù)器端在解析字符串時(shí)始終明確指定編碼為UTF-8。不要依賴系統(tǒng)默認(rèn)編碼。// 正確做法 RawString : TEncoding.UTF8.GetString(Bytes); // 錯(cuò)誤做法 RawString : TStringStream(ContentStream).DataString; // 可能使用默認(rèn)ANSI編碼客戶端確保TIdHTTP的Request.CharSet和Request.ContentType中聲明的編碼一致且都是utf-8。發(fā)送的TStringStream也要用TEncoding.UTF8創(chuàng)建。6.3 跨域請(qǐng)求 (CORS) 支持現(xiàn)象網(wǎng)頁(yè)通過(guò)JavaScript調(diào)用你的HttpServer API時(shí)瀏覽器報(bào)跨域錯(cuò)誤。解決需要在服務(wù)器的響應(yīng)中添加CORS頭部。// 在返回響應(yīng)前添加以下頭部 AResponseInfo.CustomHeaders.AddValue(Access-Control-Allow-Origin, *); // 生產(chǎn)環(huán)境應(yīng)指定具體域名 AResponseInfo.CustomHeaders.AddValue(Access-Control-Allow-Methods, GET, POST, OPTIONS); AResponseInfo.CustomHeaders.AddValue(Access-Control-Allow-Headers, Content-Type, Authorization); // 對(duì)于OPTIONS預(yù)檢請(qǐng)求直接返回200 if ARequestInfo.Command OPTIONS then begin AResponseInfo.ResponseNo : 200; AResponseInfo.ContentText : ; Exit; end;6.4 使用網(wǎng)絡(luò)抓包工具進(jìn)行終極調(diào)試當(dāng)邏輯排查無(wú)法解決問(wèn)題時(shí)必須祭出抓包工具。我推薦使用Wireshark或Fiddler。Fiddler配置為系統(tǒng)代理直接捕獲客戶端發(fā)出的HTTP/HTTPS請(qǐng)求原始報(bào)文。你可以清晰地看到請(qǐng)求頭、請(qǐng)求體的每一個(gè)字節(jié)與服務(wù)器端日志記錄的內(nèi)容進(jìn)行逐字節(jié)對(duì)比。這是排查編碼、格式錯(cuò)誤最直接的方法。Wireshark在更底層抓取網(wǎng)絡(luò)包。如果懷疑是網(wǎng)絡(luò)問(wèn)題如粘包、拆包或想分析TCP連接狀態(tài)Wireshark是唯一選擇。調(diào)試步驟在客戶端發(fā)起一個(gè)錯(cuò)誤請(qǐng)求的同時(shí)用抓包工具捕獲。對(duì)比工具中看到的“真實(shí)發(fā)送的數(shù)據(jù)”和你服務(wù)器代碼中ARequestInfo解析出來(lái)的數(shù)據(jù)。十有八九問(wèn)題就出在客戶端組裝請(qǐng)求或服務(wù)器解析請(qǐng)求的某個(gè)細(xì)微環(huán)節(jié)上。通過(guò)這次從零搭建Delphi HttpServer并完善其POST處理能力的全過(guò)程我再次體會(huì)到看似古老的技術(shù)棧在特定的、追求可控和穩(wěn)定的場(chǎng)景下依然有著不可替代的價(jià)值。關(guān)鍵在于深入理解其原理細(xì)致地處理邊界情況并配以完善的工具鏈進(jìn)行測(cè)試和監(jiān)控。希望這個(gè)資源包和其中的經(jīng)驗(yàn)?zāi)軒椭阍谙乱粋€(gè)Delphi網(wǎng)絡(luò)服務(wù)項(xiàng)目中少走彎路。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
五月色综合| 一级视频网址| 9l视频自拍9l九色9l成人| 丁香无月在线观看| 色五月婷婷1| 丁香五月天论坛| 俺也去婷婷五月天第五色| AV在线免费观看不卡| 丁香六月婷婷综合激情欧美| 综合五月婷婷| 婷婷丁香色情五月天| 996热| 色五天综合| 色五月色五天色情网| 婷婷综合网站| 六月婷色六月| 亚洲女婷婷五月基地综合久久久| 亚洲丁香婷婷五月天综合色| 久久激情网| 碰久久精品w| 亚洲av骚货| 激情综合网五月| 五月婷婷久久开心网| 大香蕉在线观看9| 五月天久久久| AV九九| 91丨九色丨白浆| 91|疯狂丨高潮丨对白| 伊人久久大香线蕉av一区| 小视频一区| www.粉嫩av.com| 超碰爱爱爱| 综合狠久久| 日本欧美成人片AAAA| 九九99热| 啊V视频在线观看| 色色色综合网| 狼友超碰| 色玖玖爱| 性色五月天| 欧美超级视频97| 久久婷婷激情视频| 99精品爱| 久久99激情丁香婷婷小说网| 大婷婷色呦呦噜噜色呦呦噜噜| 66精品成人免费网站在线观看| 91五月天| 千人斩操逼| 国产片天天爽夜夜爽| 碰97久久| 久草大| 久久性刺激| 人人看人人97| 97人人操人人| 欧日美女Va| 成人五月天综合网| 5月丁香综合网| 五月激情五月丁香| 丁香五月亚洲综合| WWW.婷婷| 97综合在线| 婷婷综合亚洲| 日日夜夜干| 97人妻碰碰中文无码久热丝袜| 五月婷婷激情中文字幕| 五月亭亭直播| 少妇搡BBBB搡BBB搡毛茸茸| 麻豆WWWCOM内射软件| 色婷婷成人做爰A片免费看网站 | 插插干干干色| 有哪些A片网站| 狠狠草狠狠草| 亚洲综合色色| 婷婷操无码| 97操碰在线97| 99ri在线观看视频| 色很很96| 五月天激情AV| 久99| 在线播放人妻| 日韩黄色电影| 激情啪啪五月天| 噜噜噜噜噜日本视频| 日韩狠狠色婷婷| 丁香六月激情综合网| 操一操插一插| 色狠狠色| 久久九网| 久99热| 五月色婷婷综合色| 色五月在线播放| 色婷婷五月综合在线| 91久久久久久久| 久久综合九九| www.99精品视频| 九洲一级A片| 国产亚洲99| 99亚洲大片精品永久在线观看| 六月五月久久丁香| AV五月丁香| 五月丁香六月色| 丁香激情五月| 丁香五月天AV在线 | 六月婷婷综合| 性爱网六月丁香| 欧美色碰| 五月天婷婷开心| 久久人妻久久| 色婷婷久久| 丁香婷婷影院| 丁香六月 婷婷六月| 色大综合| 美女五月天| 国产乱妇乱子在线播视频播放网站 | 开心五月丁香啪| 国产精品VA在线| 婷婷色九月| 久久黄色片| 香蕉乱插| 五月综合六月婷婷| 玖玖在线视频| 欧美三级欧美一级| 五月婷婷婷婷| 久久久久久久11111111111| 五月天激情网址| 亚洲婷婷五月天综合| 深爱激情六月| 欧美内射AAAAAAXXXXX| 日韩有码久久| 天天爽夜夜爽天天爽夜夜爽| 最近中文字幕大全免费版在线| 99丁香五月婷婷在线| 激情小说婷婷小说| 九九色逼| 日韩久久色| 亚洲色婷婷激情| 操逼巨乳91| 免看黄大片AA | 婷婷五月天综合亚洲| 99九九99九九九视频精彩| 婷婷欧美偷拍综合| 欧美一级色| 丁香婷婷久久综合在线| anquye五月| 91久久婷婷| 久久五月天丁香花| 婷婷五月丁香高清无码| 丁香五月性爱| 国产VA播放| 九月婷婷激情| 六月婷婷七月丁香| 天天做夜夜爽| 色婷av| 夜夜撸日日骑| 操草草草| 激情五月婷婷老师| 91操女| 婷婷激情综合色五月久久,色婷婷丁香花,丁香婷婷五月情天,久久婷婷五月综合色 | 999热在线视频| 79精品视频在线观看,| 99日热在线视频| 都市激情蜜桃婷婷五月天| 综合99久久天天综合| WWW、99热| 情五月亚洲婷婷| 久久九九免费视频| 99久久精彩视频。| www99热| 丁香色婷婷| 久99在线视频| 99久久久久| 97性视频| 五月激情视频| 99久久9| 五月婷婷啪啪啪| 婷婷色综合| 日本三级片片| 日韩AV片| 激情 五月 婷婷 丁香| 婷婷五月天激情五月天网站| 31色区视频免费看| 99久在线精品99re8热| www.色欲丁香婷婷| 99热99| 丁香五月婷婷影院| 日本99视频精品免费播放| 天天摸色吧天天摸色吧| 99久久97久久欧美综合网| 天天色天天日天天舔| 欧美在线视频9| 26uuu亚洲| 婷婷亚洲久久| www.minyis.com【JT】实力收量可预付QQ2101460746 | 亚洲亚洲永久无码777777| 久久在线视频免费观看| 99热6色| 99ri视频在线观看| 色婷婷日本| 大香蕉伊人爱在线| 大香蕉九九| 色五月亚洲五月天| 五月丁香最新| 色播五月婷婷| wwwwww.色| 五月激情综合性爱| 久久天天| 婷婷五月天堂一本在线| 激情五月综合网最新| 色五月婷婷五月| 蜜乳.comcom| 99精品久久久久久| www99精品| 99热超碰| 国内久久婷婷| 开心婷婷五月| 九九日本视频| 婷婷丁香大香蕉| 九色视频这里只有精品| 五月丁香激情六月| 99精品免费欧美小视频| 伊人干综合| 国产毛片精品一区二区色欲黄A片| 天天模,夜夜模夜夜爽| 日本久碰| 丁香婷婷色五月激情综合| 婷婷狠狠久久| 99ri精品在线| 99色在线视频| 99精品视频网| 亚洲尤物在线| 日韩欧美一级大黄网站| 99re8热精品免费视频| 综合色激情| 91婷婷丁香| AV在线不卡播放| 五月丁香影视| 99热日本| 婷婷在线精品| 亚洲视频久久| 嫩草AV久久伊人妇女超级A| 99热99这里有免费的精品| 9999热精品| 天天插综合网| 色色色婷婷| 五月婷婷色男女| 色婷婷色和| 涩综合婷婷| 五月天综合婷婷| 亚洲小视频免费看| 天天日夜夜欢| 日韩ww| 天天爽人人综合免费7799| 久久婷婷欧美| 97五月天婷婷午夜| 91欧美| 99热这里只有精品免费观看| 婷婷五月 丁香六月| 99亚洲精美视频在线观看| 五月天激情小说| 五月丁香黄色视频| 亚洲、热| 婷婷色五月天第7色| 日本九九视频| 超碰人人妻| 120分钟婬片免费看| 五月丁香六月玩女人| 婷婷六月网| 久99热| 亚洲精品另类| 99se丁香| 国产精女同一区二区三区久| 天天肏夜夜肏| 综合色图区| 五月激情视频| av九九| 天天日夜夜| 亚洲精品国产精品乱码不99| 婷婷五月天亚洲激情戏精品| 五月婷色| 婷婷丁香六月| 狠狠色婷婷| 色噜噜狠狠色综合成人99| 丁香五月 性爱| 日韩AV免费电影在线播放| 欧洲色| 激情五月婷| 丁香五月激情婷婷婷婷在线观看| 日本激情五月| 婷婷开心激情五月激情网| 五月天婷婷久久日| 婷婷舔| 伊人久久艹| 色婷婷激情| 伊人九热| 国产三级在线播放| 天天射天天操天天干| 伊人综合网站| 操人妻AV| 久久五月丁香综合| 青青久在线视频免费观看| 亚洲午夜AV| 99精品无码| 久久精品人妻| 九九在线视频| 丁香五月婷婷社区| 六月婷婷最新网址| 综合色色色| 四色永久成人网站| 能看的AV| 五月丁香色欲| 久热久操久热久草国产91| 97超级操操| 欧美色图天堂网色| site:xmssd.com| 色丁香五月婷婷婷| 婷婷综合六月| 五月婷视屏在线观看| 99热这里全是精品| 五月丁香影院| 日韩AAAAA| 五月丁香久久| 狠狠色综合网站久久久久| 久久久久视剧HD| www,色综合| 人妻久热| 天色综合网站| 九九热在线精品| 丁香五月天中文字幕| 久久99激情| 91久久久久久久久久久| 538在线精品| 欧美在线ee日韩| 五月丁香啪。| 激情五月天啪啪视频| 天天狠狠色噜噜| 俺去也五月天| 亚洲综合成人网| 4399啪啪视频| 91人人澡人人爽人人看| 人人爱天天摸摸天天爱| www婷婷| 色综合com| 无码免费人妻A片AAA毛片西瓜| 五月天婷婷社区| 无人区码一码二码三码医生系列| www.com.色色| 这里只有精品偷拍| 天天干狠狠| 另类小说五月天| 日韩二区搞逼插逼毛片| 伊人狠狠丁香婷婷综合尤物| 五月久久亚洲| 五月激情六月宗合| 日韩精品在线观看9| www色婷婷com| 26uu| 亚洲精品99| 任你爽精品免费视频6| 色色婷婷丁香| 精品99视频| 激情婷婷内射| 亚洲六月色婷婷| 大香蕉综合在线| 操逼五月婷婷| 激情综合自拍五月婷婷色五月| 开心五月深爱五月丁香五月激情五月| 开心五月婷婷激情| 美腿丝袜AV天堂网| 亚洲五月天第一综合干| 婷婷五月电影| 五月天堂六月丁香亚州中文字幕久久| 五月情综合| 99干日本| 99热观看| 天天人人天天爽| 久热69| 激情涩播| 婷婷激情综合色五月久久,色婷婷丁香花,丁香婷婷五月情天,久久婷婷五月综合色 | 久久色五月| 亚洲婷婷性爱| 这里只有精品热| 极品另类| 丁香久久九九99| 五月天婷婷激情小说| 91热久久| 午夜成人网站在线观看| 99热免费在线| 超级碰碰97在线| 精品思思久久| 亚洲人妻AV| 91人碰| 99'无码| 操操天堂| 无码 av电影| 一起草AV| www.超碰| 色狠狠色| 色吧五月婷婷| 久久99免费视屏| 99超级碰碰| 婷久久综合| 日日噜狠狠色综合久久| 青青久在线视频免费观看| 色婷婷视频| 久久xxxx| 人妻五月天激情开心网| 色综合综合色| 丁香综合| 99热99色| 国产毛多水多女人A片| 久9热| 91se在线视频| 99免费综合网| 色播五月天激情| 99热全是精品| 激情五月天啪啪| 人人妖人人97| 久久婷婷五月天蜜桃| 丁香五月天日韩无码| A网在线欧洲| 色噜噜狠狠色综无码久久合欧美| 丁香五月激情视频在线| 7777国产盗摄农村女人| 色五月综合激情| 久9热在线免费观看| 婷婷五月久久| 五月情涩综合婷婷| 婷婷五月天激情电影| 国产精品日日躁夜夜躁| 久久婷婷精品| 亚洲久久日| 丁香五月婷婷亚洲色图| 久操人妻| 精品成人无码A片观看香草视频| 天天摸天天舔天天爽| 国产成人精品一区二三区熟女在线| 色婷婷婷av| 国产精品国产成人国产三级| 亚洲色综合性| 特级操b片| 亚洲午夜AV| 天天 青草 制服丝袜 在线| 噜噜噜狠狠色综合| 五月婷婷五月天亚洲无码| 91人人看| 色综合婷婷| 高清不卡一区| 国产日韩精品SUV| 一级A片天天操夜夜操| 丁香五月天日韩无码| 五月激情站| 色综合丁香婷婷| 开心激情综合| 久久性爰视频这里只有精品| WWW,五月| 裸体做A爰片毛片A片免费| 日韩色情亚洲五月天婷婷| 91综合网| 九九免费视频| 99久久婷婷五月天| 国产91在线视频| www.精品99| 欧洲区自拍| 日日干天天射| 日本噜噜色网| 97影院一级片| 新激情婷婷| 色狠狠色噜噜AV天堂五区消防| 亚洲超碰中文字幕| 久久99精品九九久久久婷婷| 伊人婷婷五月天av| 久9热| 色色欧美色色色| www.天天干| Av性爱网| 久青操| 超碰AV在线| 午夜 外网 精品 在线| 手机在线视频观看9| 五月亭亭狠狠| 人妻操逼视频。| 热99色| 丁香九月婷婷| 五月天成人综合| 五月天国产成人| 丁香色情五月综合激情| 五月丁香啪啪啪| 日本婷婷| 五月天色视频| 美女婷婷六月色| 九九色区| 伊人色综合网| 激情综合网五月丁香| wwwC0maV五月花| 91狠狠综合久久久| 色九九九九| 中文字幕免费高清电视剧| 婷婷五月天网址| 99精彩视频在线观看| 99re青青草| 色婷婷丁香A片区毛片区女人区| 五月丁香在线| 99爱在线视频观看| 99热日本| 久久五月丁香伊人青草| 中文字幕丰满人妻无码专区| 99综合视频一体| 99久久精品网| 成人欧美一区二区三区在线观看| 五月丁香啪啪啪啪| 第四色网婷婷| 九九热99精品| 天天久综合网永久入口18| 亚洲人妻电影| 成人免费va| 婷婷五月天久久久| 五月婷在线影院| 婷婷五月色花丁香社区| 不卡成人免费| 丁香五月之久操视频| 婷婷色五月激情| 在线观看婷婷5月| 天天干天天操天天上| 免费AV黄在线播放| 中文字幕丰满乱孑伦无码专区| 任你擦免费视频| 日韩AV中文字幕在线| 国产欧美精品AAAAAA片| 国产欧美精品AAAAAA片| 五月婷婷综合网| 欧美性丁香色色五月天干干| 丁香六月婷婷久久综合| 直接看的av| 午夜激情五月天| 婷婷六月天精品| 、激情六月天| 金桔一区二区ab地址| 久久网日本| 丁香 久久| 大香蕉福利导航| 亚洲成AV人片在线观看| 九色综合五月天婷五月| 91精品国产综合久久久不卡电影| 中国女人做爰A片| 久草热久草在线视频| 这里只有精品久久| 国产伦亲子伦亲子视频观看| 天天拍天天操| 五月天激情小说| 精品一二三区久久AAA片| 超碰狠狠操| 婷婷久久综合久| 亚洲 小说 欧美 激情 另类| 欧美激情五月天婷婷| 美女天天久久| 激情美女五月天| 色久在| 丁香六月天婷婷在线| 99er这里只有精品视频| 色婷婷4| 精品一区二区三区木瓜| 亚洲99视频| 五月丁香青草综合啪啪| 欧美日韩AAA| 五月丁香六月激情视频| 国产免费一区二区三州老师F1F1| 九九色逼| 激情九月婷婷| 99re6在线视频精品免费| 激情AV| 草草夜夜操| 色97啪啪| 99视频内射三四| www.狠狠狠狠| 五月色色激情网| 久久久精品AV| 国产精品18久久久| 五月婷婷伊| www.99热这里精品| 日本的α片xxxwww| 六月色播| 婷婷五月在线播放| 丁香五月电影| 欧美日韩婷婷五月天| 99热69| 亚洲天堂99| 婷婷六月综合| 狠狠狠人妻| 五月天综合色| 狠狠爱婷婷| 操91| 91人碰| 五月丁香美女| 国产视频婷婷| 欧美交换配乱吟粗大25P| 99艹精品在线观看| 欧美成人Va| 婷婷五月天日本无码| 激情伊人五月天| 99热黄| 免费国产VA国产免费| 玖玖资源站中文| 亚洲精品亚洲人成人网| 99亚洲精美视频在线观看| 怡红院院久久| 五月丁香六月色| 久久 中文 日本| 五月天色婷婷小说| 色综合伊人网| 欧美综合123区| 五月天色婷婷网| 日日夜夜狠狠| 99自拍视频在线| 99re8在这里只有精品| 精品一二三区久久AAA片| 4399亚洲视频| 高清无码入口| 亚洲一二三网| 色婷婷五月网| 久草婷婷| 天天做天天爱天天搞| 成人在线99| 99色在线观看视频者| 激情涩涩网| 超碰99热| 亚洲AV网址| XX色综合| 玖玖玖婷婷婷| 思思热精品在线观看| 亚洲V国产V欧美V久久久久久| 97碰在线| 日本91在线| pom538精品视频| 99热这里只有精品2| 香蕉97碰碰碰欧美| 激情五月天啪啪| 99热欧美| 亚洲亚洲激情| 最近中文字幕大全免费版在线| 大香蕉久久| 午夜成人AV在线| 久热91精品| 久9免费视频| 久久思思99| 色综合色综合色综合色综合| 五月天堂六月丁香亚州中文字幕久久 | 色五月丁香婷婷在线观看| 天天日色情| 极品人妻videosss人妻| 国产午夜伦鲁鲁| 欧美色播综合在线观看| 少妇AB又爽又紧无码网站| 五月丁香婷婷综合在线| 婷婷99| 亚洲视频在线观看99| 五月天色色网站| 久久婷婷丁香五月一二三| www.色五月| 五月丁香六月婷婷啪啪综合 | 一级片操逼视频| 天天干天天干天天干天天干天天| ..真实国产乱子伦毛片| 五月丁香花婷婷玉莉AV| 中文字幕无码成人电影| 色情五月天丁香社区| 91成人电影| 久九色| 99热综合在线| 国产欧美日韩综合精品一区二区| 色色亚卅| 色99视| 99九九综合久久九九| 亚洲精品99| 激情五月综合网| 国产又黄又爽又激情不遮挡视频在线观看| 日韩欧美成人一区二区三区| 狠狠色综合网站久久久久| 色综合久久综合| 婷婷午夜丁香| 国产Va视频| 久9综合| 激情五月天色播| 成人在线视频网| 五月婷在线| 五月婷婷网站| 五月天丁香网站| 国产亚洲99久久精品| 嫩BBB槡BBBB搡BBBB视频| 九九精品碰| 婷婷四色五月| 婷婷精品在线| www一起操在线观看| 色欲av伊人久久大香线蕉影院| 日日操夜夜操狠狠操| 五月天另类小说久久小说网| 欧美日韩成人一区二区| va婷婷在线| 99在线综合视频| 五月婷婷色| 欧美日本一区二区三区| 91网站黄| 五月婷婷啪啪啪啪| 人妻精品在线| 色婷婷五月天小说网| 成人在线综合| 欧美性生交XXXXX无码小说| 婷婷六月综合激情| 五月激情婷婷开心五月| 欧美日韩成人在线网| 99在线精品视频| 婷婷丁香成人五月天| 97精品综合久久| 久草免费福利视频| 日日撸夜夜操| 囯产精品久久欠久久久久久九大| ri电影在线| 《丁香激情综合久久伊人久久》影视在线观看 -高清预告手机免费播放 -三妹影院 | WWW99热| 超碰在线观看三级片| 久久作爱| 终合激情网| 国产色色网址网站| 七七九色| 九 九九九AV| 俺去也婷婷| 狠狠爱婷婷爱| 99热这里只有免费精品| 久久老码第一| 色色色婷婷五月天| 黄色aa观看aaguochan| 九九精品热| 激情综合五月婷婷| 99亚州综合精品成人网| 另类图片激情五月天| 国产免费一区二区三区三州老师F1F1.CC | 国产avapp 网| 狠狠色狠狠色综合日日91| www99热| 殴美激情综合网| 婷婷色5月激情网| 激情五月婷婷网在线观看| 婷婷久久综| 久久综合综合综合| 婷婷91视频| 婷婷色影院| 五月婷婷三级| 99九九热视频| 久久久免费精彩视频| 亚洲麻豆乱码国产2028| 99热国产这里只有| 丁香五月婷婷啪啪| 久月婷婷| av在线观看网站| 亚州综合色| 六月丁香开心婷婷欧美| 嫩模草| 无码视频国内精品久久久| 久久婷婷色| 五月天婷婷在线播放| 五月婷婷啪啪网| 五月香婷婷| 婷婷亚洲五月| 噜噜狠狠色| 久久精热| 999热这里只有精品| 丁香婷婷激情网站| 深爱五月日韩| 天天夜夜爽| 激情婷婷五月基地| 99热这里只有在线| 这里只有精品在线免费视频| 色五月天视频| 五月丁香六月婷婷手机无线| 五月天玖玖狠狠色色| 日日射天天射| 久久久精久人妻| 怡红院精品视频久久久久久久久| 色色色欧美色色| 久久99久久99精品免观看软件| α久久| 婷婷五月六月丁香综合| 日本激情综合| 婷婷六月激情| 激情综合色图| 婷婷六月色| 99精品视频免费观看| 激情综合网五月婷婷| 91欧美| 电影91久久久| 中文字幕不卡网站| 熟美女麻豆| 婷婷丁香激情综合色情| 人妻AV在线| 日本熟女三区| 五月丁香六月婷婷亚洲| 思思热久热| 五月天婷婷久久| PORNY九色9l自拍视频成人| 色五月婷婷影院| 99热思思| 色色999三级片| www.久久婷婷| 久久伊人大香蕉| 久久ER视频com| 中文字幕性爱丰满| 婷婷的色色五月天| 玖玖资源在线视频| 少妇高潮呻吟A片免费看软件 | 丁香五月天欧美在线| 五月婷婷AV| 人人人操| 激情又色又爽又黄的A片 | 亚洲人妻一区二区| 免费在线观看欧美激情xx小视频| 国产成人在线精品| 婷婷五月天丁香| 天天色五月婷婷91久久久久久久| 亚州操逼网| 丁香五月 综合| 国产精品久久7777777精品无码| 99热只有| 激情婷婷| 91精品国产综合久久蜜芽解析速度| 色婷婷久久天天性爱| 青青热久精品视频在线观看| 深情五月天| 欧美人妻一区二区| 琪琪色综合网站| www.99精品在线| 亚洲性图一区二区三区| 99这里只有精品视频| 俺去也综合| 丁香婷婷影院| 色色日韩网| 天天做天天爱天天玩夜夜爽 | 欧美激情-区二区三区| 97色热| 国产精品久久久久9999小说| 婷丁香五月天| 亚洲综合干| 日本99色| 青青草伊人婷婷| 狠狠香蕉| 日日.c| 六月婷婷综合| 综合网啪| 天天干-天天日| 午夜成人天堂久久无码日韩久久| 爱99干99| 综合婷婷| 99精彩视频| 小香蕉av| 草综合网| 天天爽天天| 色综合99无码 | 男人大jjc女人免费视频| 五月丁香啪啪啪综合网| 色色五月婷婷丁香| 六月丁香啪啪| 人妻九九九九| 99热这里只有精品免费观看| 久久99热这里只频精品6学生| 婷婷 伊人 久久| 色五月视频,小说| 大香蕉人妻| 伊人网大香| 久久婷婷五月免费视频| 人妻熟女一区二区AV| 99久久9| 五月婷婷在线观看黄| 色色综合网www| 99久久国产宗和精品1上映| 婷婷色情网| 91日精品| 日日夜夜爽| 爱爱网址9| 思思视频这里是精品| 婷婷丁香五月麻豆| 97五月天婷婷综合激情网| 五月天伊人手机在线播放AV| 九九热精品| 91蜜桃婷婷狠狠久久综合9色| 五月激情综合网| 不卡成人免费| 99精品视频在线| 97人人射| 五月婷婷干干干| 亚欧州精品视频| 婷婷六月综合基地| 六月丁香VA| www.婷婷激情网.com| 五月花婷婷最新| 久久综合婷婷| 婷婷丁香视频在线观看免费| 久久人人看| 五月丁香六月成人| 精品网站:999WWW| 丁香五月大香蕉AV| 日日操日日撸| 色婷婷香蕉丁丁网| 亚洲五月花| 日本情色一区二区| 久久这里都是精品| 久久久免费图片视频| 日屌日日操日日色| 丁香花五月天社区| 天天爽夜爽| 婷婷中文字幕网| 可以看的av| 婷婷五月天亚洲综合| 色五月大| 91无码视频| 九九热99视频| 五月丁香久久精品在线观看| 久草热在线视频| 青青草原中文字幕| 九九激情网| 激情婷婷亚洲五月| av中文字幕免费观看| 丁香五月亚洲天堂| 欧美偷偷操| 五月天婷婷激情小说电影| 久久九九re热| 婷婷五月丁香综合激情| 4399在线日本A片| 五月婷婷综合激情| 狠狠夜夜五月丁香| 亚洲午夜成人av电影网| 99热只有精| 久久影视婷婷五月| 久久99操| 久久aaa| 狠狠爱成人综合网| 熟女激情五月天 | 丁香五月天成人| 欧美成人五月天| 久久久久婷| 97操操| 欧美日韩大黄| 婷婷色狠狠| 99热资源在线| 天天舔天天插天天爱| 国产婷婷色综合AV蜜臀AV | 日日操天天| 99热丁香| 91人妻PORNY九色大屁股| 婷婷五月天性| 99人人操| 六月丁香网| 狠狠狠狠操| 超碰爱爱爱| 99热色精品| 婷婷丁香激情五月天色色| 激情丁香五月AV| 99热6精品| 五月婷婷色情| ′久久99一| 亚洲激情综合| 色色色成人网| 二色av| 狠狠色 综合色区| 久久婷婷综合国产| mmm1717.6dbm人人爱人人操| 奇米影视777在线_在线观看午夜_h小视频在线观看_岛国大片 | 激情深爱五月天| 天天夜天天色天天| 91黄操| 国产成人AV不卡| 色色色在线观看| 亚洲中文无码成人| 综合激情在线观看| www九九热| 九九热在线观看视频| 天天射夜夜爽| 99资源人人| av九九| 色婷婷六月| 六月婷伊人| 人妻久热| 伊人香大香蕉视频| 五月天色图| 天堂草在线看www| 99视频超级精品| 五月亭久久无码视频| 狠狠狠狠狠| 香焦网五月天| 色区域网站视频| 激情五月婷婷丁香六月| 婷婷五月另类网站| 五月丁香综合| 欧美影院| 人人人人人人人草| 久久久久久xxxxx| 欧美丁香五月| 五月婷A V在线| 色综合伊人网| 欧美在线视频免费播放| 99九九视屏| 亚洲一个色| 久色激情| 亚洲综合色激情色五月| 国产av天堂| 91操熟女| 在线综合网| 激情综合网 激情五月天| 婷婷五月四狠狠| 大香蕉中文| 99在线免费视频播放| 天天爽天天爽| 9l视频自拍9l九色成人| 五月天婷婷久久视频| 丁香五月色五月婷婷宗合| 色综合色综合婷婷热| 色狠狠色综合久久久绯色AⅤ影视| 狠狠色丁香乆乆| 99色热| 婷婷狠狠干| 婷婷午夜丁香| 激情五月天偷拍综合网| 97丁香五月| 九九爱看亚洲| 五月色无码| 色丁香五月婷婷婷| 国产欧美日韩性爱| 色色色婷婷五月天| 九九色区| 色综合久久88| 在线综合91| 色网站9| 久久九九激情五月天 | 中文字幕精品在线观看| 五月色婷婷综合| 婷婷精品综合| 丁香五月激情视频| 亚洲精品性色| 五月婷婷视频ab| 综合五月亭亭9| 五月丁香啪啪激情| 色97综合婷婷天天色| 久久久久久天天日天天爱| 操操操操操操婷婷五月天| 亚洲啪视频| 六月丁香啪啪| 大香蕉九九| 丁香六月婷婷激情综合| 亚洲性受XXXX五月丁香| 无码地址| 99热日韩这里只有精品| 婷婷免费成人视频| 五月丁香亚洲五月| 开心五月深爱五月婷| 欧美英丁香开心快乐六月天网| 91啪级电影| 丁香五月婷婷成人网| 色人妻五月| 天天碰夜夜爽| 国产美女视频久| 天天干一干| 五月激情婷婷综合| 色五月在线观看| 亚洲成人免费电影| 99精品国产在热久久| 99噜噜噜在线播放| 波多野结衣不卡AV| 69人人操人人爽| 亚洲午夜Av| 色婷婷97| 色五月丁香五月五月婷婷| 五月婷婷六月激情在线| 丁香五月婷婷激情视频播放| 综合五月天婷婷色| 免费观看的婷婷五月视频在线| 99综合网| 久久机热/这里只有精品| 丁香六月啪啪| 九九九激情网| 免费看无码视频A级| 影音先锋色婷婷| 99热思思在线观看| 激情宗合网激情五月天| 久久久这里有精品| 综合婷婷久久| 成人做爰A片免费看网站找不到了 噼里啪啦在线观看免费完整版视频 | 91精品久久久久久久久久久久| 国产在线中文字幕| 久久99热这里| 99er精品视频| 五月丁香婷婷在线| 丁香五月社区| 久久亭亭电影| 丁香五月自拍| 99热日本| 五月婷婷导航| 九九99精品视频在线观看| 欧美日韩成人综合9| 天堂网色色| 这里只有精品视频视频在线观看| 天天干天天干天天干天天干天天| 韩国天天婷婷| 99热6这里只有精品| 欧美综合五月天婷婷tin| 人人性久久| 五月婷婷就去色| 婷婷五月色天| 九月婷婷久久| 国产a视频| 丁香午月AV中文字幕| 九九综合久久| 欧美激情综合| 一级黄色片看看| www.91操| 久久这里99| 色婷婷大香蕉| 91在线观看九区| AA久久| 热这里| 91成人品| 97色五月丁香婷婷| 夜夜 操无码| 丁香六月婷婷综合在线| 色五月婷婷久久| 超91热| 热99国产精品| 久久婷婷五月天蜜桃| 丁香色五月 97干| 9热在线视频| 婷婷五月丁香综合激情小说| 婷婷五月天社区| 亚洲色无码A片一区二区麻豆| 激情小说在线视频| 激情玖玖综合网| 国产精品久久99| 夜夜骑天天操| 亚洲亚洲人成综合网络| 96精品久久久久久久久| 天天色官网| 色色婷婷丁香| 色射7856五月天激情四射| 婷婷丁香五月天综合网| 超碰9| 色九月丁香婷婷蜜桃在线观看| 婷婷丁香六月综合激情站| 亚洲九九视频| www.金莲av| 婷婷五月四狠狠| 蜜臀av粉嫩av懂色av| 岛国AAAV| 99re这里只有精品免费| 国产91视频| 超碰网站在线观看| 热99re| www.99视频| 九九色人| 五月天 婷 欧美亚洲| 96丁香婷婷九月蜜桃综合久久| 久久黄A片| 99热在线观看精品| 五月婷婷97| 深夜A片| 日逼AV影音先锋男人资源站| 这里都是精品99| 丁香大香蕉| 久久婷婷夜| 色婷婷五月天视频在线| 91打屁股免费看| 久久成人性爱| 思思re99视频在线观看| 69久久99精品久久久久婷婷| 丁香五月天啪啪a日本| 五月婷婷影视| 五月丁香综合伦理片| 涩五月婷婷| 激情五月天久久丁香| 激情丁香婷婷| 久久狼人天堂| www.精品99| 六月色播| 五月停停色色丁香| 69久久99精品久久久久婷婷| 婷婷狠狠操| 开心五月婷婷综合在线精品素人| 2025天天操| 五月丁香六月综合图| 久久久久久丁香五月| 婷婷五月五月丁香| 99色一| 1024人妻无码中文字幕| 996热re视频精品视频这里| 婷婷大香焦| 狠狠狠五月婷婷六月丁香| 天堂久久丁香| 五月丁香六月婷婷手机无线| 操B视频在线播放| 中文字幕 久久9999| 超碰日韩成人| 五月天激情网页| 99爱在线| 久草热视频在线观看| 久热久re| 天天在线XXX| 日韩AV在线免费观看| 婷婷欧美综合| 狠狠干婷婷| 色999亚洲人成色| 亚洲天堂久久| 日日操日日撸| 欧美精品XXXXBBBB| 中文字幕,综合,91| 欧美婷婷五月天综合| 婷婷五月花| 色婷婷色和| 丁六月激情| 丁香五月Av| 国产色香蕉精品五夜婷| 人色五月天婷婷| 色婷婷丁香五月| 国产精品岛国片在线观看免费| 深爱婷婷色| 99精品无码| 青青草原亚洲天堂| 99久在线精品99re8热| 日本无码专区| 色VA| 久久99婷婷| 色五月婷婷五月天激情综合| 色欲资源网| 亚洲亚洲人成综合网络| 伊九九三级区| 99riAv1国产在线观看| 91伦| 大香蕉AV在线| 日日夜夜干| 五月婷婷婷婷婷| 国产成人AV在线播放| 很很干天天干| 狠色狠色综合久久| 婷婷九月在线| site:pnnrt.com| 伊人婷婷五月| 日韩一级网站| 伊人色综合网| 直接看的AV网站| 色v综合网| 午夜天堂一区人妻| 99这里只有精| 丁香五月天激情网址| 久777| 欧美 日韩 成人在线| 99这里只有免费的精品| 国产欧美大香蕉一区| 日本三级日本三级99| 色色日韩无码| 在线观看av网站| 四LLL少妇BBBB槡BBBB| 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | 欧美婷婷五月无砖| av操一操| 白人荫道BBWBBB大荫道| 思思久久99| 五月视频日本免费观看| 2021日韩无码| 99激情视频| 免费看欧美成人A片无码| 激情开心五月婷婷| 五月丁香在线观看99| 免费观看欧美成人AA片爱我多深|