欧美成人午夜精品久久久,国产?V天堂一区二区三区,欧美精品va在线观看,亚洲一区二区三区免费在线观看,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
返回資訊列表
婷婷丁香九色| 饮料下药迷倒漂亮女同事强干| 丁香花大香蕉婷婷综合| WWW,五月| 婷婷五月天首页| 天天透天天干| 婷婷色色亚洲| 五月丁香六月综合激情| 亚洲婷婷激情综合激情999精品| www.婷婷亚洲基地| 久热在线观看视频9| 美欧日韩国产成人在战| 久热精品视频在线观| 韩国中文字幕91| 六月婷婷综合| 天天爱夜夜爽| 伊人婷婷色激情丁香| 婷婷刺激综合| 色色色色色日韩午夜激情| 婷婷综合五月| 五月婷在线| 99成人精品六| 亚洲精久久| 激情五月婷婷丁香综合网| 亚洲精品视频在线播放| 91狠狠色色丁香婷婷综合久久| 这里只有精品视频在线观看免费| 97婷婷色| 欧美日韩99| 夜夜嗨一区二区三区直播内容 | 婷婷五月丁香性爱| 97久久人人人干| 亚洲色夜| 中文字幕AV网址| 天天影视色综合网| 99热视精品| 九九久久综合| 综合激情伊人影视在线| 精品乱码视频| 色 免费网站视频| 亚洲欧洲午夜成人精品av| 国产精品久久久久9999小说| 中文成人在线| 五月婷婷电影院| 久久99网站| 亚洲综合99| 久久黄色片| 亚洲热综合网在线观看| 中文字幕性爱丰满| 色99网| 久久午夜理论| 99视频精品全部免费 在线| 色色色色综合网| 99精品偷拍视频| 色色色激情网| 亚洲无码猫咪| 色www.con| 99久久超级| 9热网站| 香蕉久久国产AV一区二区| 思思热99热| 9有码中文| 色婷婷五月天| 久久99久久99久久99人受| 久热这里只有精品6| 中文字幕在线日亚洲9| 色播五月婷婷| 国产亚洲在线观看| 国产AV国片偷人妻麻豆| 91伦| 久久久久久久久久久44| 五月婷婷色| wWwCom夜操wwW| 婷婷综合五月| 久99久热只有精品国产99| 色综合色色色色| 婷婷色婷婷亚洲成人| 婷婷亚州综合| 久久人人九九| 在线婷婷| 丁香婷停五月激情综合深爱| 中文av网站| 综合激情深爱| 91精品国产91久久久久青草| 成人精品一区日本无码网| 欧洲MV日韩MV国产| 五月99久久| 国产精品操| 九九碰九九爱97超| 丁香五月av在线| 996er在线观看| 99惹| 97碰人人操| 操碰97| 99在线精品视频| 婷婷色色综合| 996热| 五月婷婷综合色啪首页| 香蕉综合在线| 亚洲AV日韩AV永久无码网站| 婷婷久久久久久久| 五月天婷婷基地综合网| 岛国在线观看91| 精品九九婷婷| 亚洲mm色| 91超级碰| 亚洲在线播放| 五月花婷婷最新| 丁香五月综合| www.91AV.com| 五月天色婷婷图片| 丁香久久| 在线超碰免费| 丁香激情合作五月| 激情五月天综合| 亚洲xx在线| 婷婷久久女人| 乱轮A片| 超碰人人操人人干| 欧美熟妇一区二区三区| 米奇影视资源777狠狠色婷婷五月天激情网| 天天干天天干天天操| 激情综合网五月婷婷| 伊久大香蕉| 国产日韩av片| 亚洲美女网Va| 艹色18p| 九九热这里只有精品23| 激情五月婷| wwwav大香蕉| 亚欧州精品视频| 五月天狠狠草| 婷婷在线播放| 色色网站在线免费观看视频| 26uuu精品国产| 亚洲成人丁香花| 欧美色图天堂网| 79色色免费| 99热无码| 婷婷五月天渟渟| 婷婷五月天堂网| 五月天婷婷丁香视频| 丁香五月影视| 影音先锋噜一噜| 国产精品色婷婷AV综合色色| 岛国资源站| 婷婷操逼网| 婷婷伊人网| 久久总和99| 99热激情| 色五月婷婷综合在线| www.日日夜夜| 91碰免费视频| 综合激情视频| 午夜爱插插| 狠狠五月激情婷婷直播片| 国产欧洲欧洲精品久久| 婷婷五月丁香六月伊人网| www.精品99| 综合五月丁香97| 开心五月天激情网站| 成人精品视频99在线观看免费| www.yw尤物| 九月婷婷色色| 天天插天天插天天操| 五月丁香亭亭操逼| 久久视网36| www.99在线| 99久久亚洲国产| 婷婷色爱| 色私五月婷婷| 国产激情综合五月久久| www.日日夜夜| 国产精品久久久久久久久久免费 | 久久99激情| 久久婷婷五月综合激情国产| 91伦| 99热都是精品| 99 色色吧| 成人精品视频99在线观看免费| AV电影在线播放| 五月天婷婷无码| www色综合亚洲92| 丁香婷婷六月| 91丨九色丨首页| 婷婷五月激情天| AVV黄| 狠狠色丁香婷婷久久综合| 182TV亚洲| 97色在线视频| 久久草婷婷丁香网站| 激情婷婷在线| 99免费| 99色在线视频| 婷婷五月综合基地| 天天干天天干天天干天天干天| 六月丁香激情综合网| 国产成人片| 99视频精品全部免费观看| 亚洲无码免费看| 激情第四色| 一区色色色色网| 日本操B视频在线观看| 婷婷丁香在线播放| 色婷婷av在线观看| 中文字幕高清av| 五月丁香六月婷婷欧美综合| 玖玖无码中文| 67194中文在线| 人人人操| 开心激情网五月| 人人操91| 亚洲人人艹| 久久99精品九九久久久婷婷| 五月天婷婷无码视频| 五月丁香无码| 激情综合网激情五月俺也去| 婷婷亚洲综合| 久操97| 五月婷免费视频久久久| 五月激情综合网| 五月婷婷久草| 天堂成人A片永久免费网站| 五月婷婷真爱激情网| 亚洲色9| 久久日韩婷婷五月| 九九久久五月天| 久久五月天黄色五月天色网址| 射久久丁香五月| 国产做爰视频免费播放| 综合网五月| 久草五月天| 色五月开心婷婷| 男人的天堂97| 丁香婷婷久| 丁香五月婷婷五月天| 国产成人VA| WWW,五月| 欧美三级黄色片久久| 天天干,夜夜爽| 狠狠五月激情丁香六月| 五月天婷婷乱论小说| 99久久99热| 婷婷丁香五月色偷偷| 激情婷婷丁香| 欧美性生交XXXXX无码小说| 九月婷婷久久| 亚洲色99| 超碰在线超碰| 日本久久性| 日日狠狠久久偷偷四色综合免费 | 99啪啪网| xx久久| 丁香六月激情综合网| 亚洲日韩一页精品发布| 性爱网五月婷婷| 在线只有精品| 日曰躁夜夜躁2026| 中文不卡av| 精品一二三区久久AAA片| 色五月婷婷综合在线| 五月丁香天堂网| 丁香五月激情无码视频| 丁香五月婷婷色偷偷| 五月婷婷网久久| 成人羞羞啪啪 全 视频| 呦呦AV| 欧洲婷婷五月天| 天天骑日日爽| 久久奄也去色色网站| 99热这里有精品6| 在线不卡中文字幕| 婷婷天堂站| 欧美久久婷婷| 婷婷久久视频| 中文字幕人成乱码在线观看| BBWCUCKOLD精品熟妇| 丁香五月婷婷啪啪啪| 大香蕉久久婷婷| 激情99| 色五月婷婷影院| 天天插天天干| 久久婷婷视频| www久久久久久久久久久久久久久久久| 爽极品色| 免费观看全黄做爰的视频| 全部老头和老太XXXXX| 97人妻碰碰中文无码久热丝袜| 九九色色网| 激情综合久久| 老妇六区| 九九大香视频| 天天噜天天爱| 色五月天婷婷| 激情综合网激情五月天| 综合五月激情| 五月丁香婷婷中文| 久久五月丁香伊人青草| 极品人妻videosss人妻| 大香蕉中文| 九九热这里| 丁香五月天婷婷中文字幕| 九九干视频| 丁香五月婷婷基地| 天堂久久大香蕉| 在线成人网址| 思思re视频在线| 一级黄色尤物综合视频手机在线观看| 人妻av在线| 国产精品一区在线观看你懂的| 欧美在线ee日韩| 99视频| 97香蕉人人在线观看| 综合久久综合久久| 狠狠激情五月天| 欧美色色色色色色色色色色| 操91| 丁香六月婷婷社区| 天天艹夜夜爽| 色综合综合色| 婷婷综合伊人| 情情五月天色| 99热在线观看免费精品| 久久精品女人天堂AAA| 欧美99| 激情五月,婷婷五月,丁香五月| 激情九月综合| 97热九九| 青青草原99热| 国产乱人偷精品人妻A片| 99日在线观看视频| 婷婷五月偷拍| 国产精品人成A片一区二区| 婷婷五月丁香A∨| 91婷婷色| 五月丁香色综合| 亚洲精品第一色色色色色色| 99视频这里只有免费精品| 久久九精品| 久久九九99| 六月色 亚洲| 熟女色专区| 色婷婷电影网| 日日影院 | 99在线热| 情色婷婷五月天| 涩丁香| 草操网| 淫视馆aV二区一区| 色热久| 天天狠狠六月婷丁香影院| 久久久GOGO无码啪啪艺术| 任你干aa| 夜夜撸日日骑| 婷久久久| 色婷婷裸体色性在线| 99色综合| 69午夜成人影片| 九九这里只有精品| 五月丁香综合啪啪啪啪啪| 五月丁香在线综合| 色色丁香色五月| 日韩欧美骚货| 无码少妇高潮喷水A片免费| 久久网站免费亚洲| 中文字幕无码人妻少妇免费视频| 99久视频| 久久婷五月天| 午夜不卡成人一区二区| 久久成人亚洲欧美电影| 天天做天天爱天天要| 五月伊人91| 九九视频精品在线免费| 激情丁香五月| 丁香六月婷婷色XXXX| 国产毛片精品一区二区色欲黄A片| 亚洲色色图片| 天天色综网| 婷婷色导航| 色啪网| 亚洲视99| 欧美天堂婷婷日韩| 色五月婷婷基地| 激情图片99| 天天综合 99久久婷婷| 99乱视频| 开心婷婷五月| 在线观看玖玖资源免费观看| 色九九九综合| 五月丁香色色网| 另类激情五月天。| 久草五月婷婷| 春色激情第四色| 99A片| 噜噜色婷婷| 色五月激情综合| 五月丁香啪啪啪啪| 深爱五月中文字幕| 日本99视频精品免费播放| 久超超碰| wwccc久久久| 丁香五月婷婷色综合| 99re思思热久久| 久碰久操| 久久久天堂国产精品女人| 丁香丁香激情网| 五月婷婷色欲| 日本一道久久| 精品皮股午夜AV| 91xxxx九色| 久久婷色| 色婷婷五月中文字幕在线dvd| 色情婷| 激情视频综合| 狠狠干总合| 丁香五月成人自拍| 另类少妇人与禽zOZZ0性伦| 丁香六月色婷婷综合| 欧美VA视频| 国产激情久久久| 日本www五月婷婷| 精品操逼一区二区| 专区无日本视频高清8| 五月六月婷婷| 丁香久久AV| 日韩AV一区二区三区| 色播五月婷婷| 五月天综合视频网| 免费观看的AV| 激情综合婷婷五月| 婷婷六月天天| www.com在线操视频免费观看| 超碰人人色| 激情五月综合网最新| 99热最新网址| 狠狠色大香蕉| 超碰在线资源| 久久黄色片| 99re热久久| 91怕怕网| 8050一级网| 五月天丁香网站| 国产片色| 97干在线| 亚洲网站999| 婷婷五月成人| 成人无码精品1区2区3区免费看| 91色婷婷综合久久中文字幕二区| 日韩按摩二区| 色噜噜五月丁香婷婷| 色欲久久久久久综合网综合网| 97在线综合| 丁香五月五月婷婷| 另类图片色五月| 天天综合网站| 99综合激情久久精品久久| 91九色成人原创视频| 可以看的av| 国产色香蕉精品五夜婷| 另类图片天天影视在线观看| 亚洲综合字幕色色| 老师高潮流白浆喷水的A片| 色婷婷色五月天| 婷婷六月视频| 色五月激情五月| 久久色这里只有精品| av无码电影| 激情五月天婷婷| 小视频aaa久久久| 超碰色碰碰| 亚洲操操操| 99热福利| 91丨九色丨老熟女激情| 99热免费精品| 密臀久久| 婷婷内射视频在线| 国产毛片精品一区二区色欲黄A片| 99色6爱9热| 国产精品五月丁香| 99在线视频女女视频| 色五月婷婷影院| 五月香蕉综合| 真实熟女-91九色| 97婷婷狠狠| 狠狠va| 色综合香蕉视频| 亚洲色另类| 久播影院免费观看电视剧大全最新网| 五月婷婷人人人操| 777精品久无码人妻蜜桃| 丁香五月天综合| 亚洲性图一区二区三区| AV无码免费| 老美AA片| 五月天色区| 久久久久丁香婷婷五月天| 丁香花五月天激情| 婷婷精品| 五月婷婷激情| 蜜乳中文字| 婷婷免费精品视频| 丁香五月成人自拍| 国产片XXXXA片国语对白| 欧美va在线观看| 伊人婷婷激情| 婷婷五月色播网| 91丁香婷婷综合资源| 激情婷婷六月天| 亚洲综合99| 丁香桃色综合网| 久久精典| 怡春院久操| 色香久久| 婷婷狠狠操| 五月丁六月婷| 狠狠肏综合网| 丁香香五月激情免费视频| 久久青草国| 影音先锋男人女人| 日日噜狠狠| 色五月成人在线| 丁香五月天色综合| 婷婷久久久| 激情九色| 光棍影院日韩精品| 九九九午夜视频| 99热综合在线观看| 五月婷在线| 翔田千里 50岁 无码| 天天爽天天爽视频| www.伊人天堂偷偷婷婷| 99色啊| 欧美性猛交99久久久99| 丁香密臀AV激情网| 婷婷五月天性爱视频| XX色综合| co超碰在线观看| 啪啪91| 五月天色婷婷综合| 色婷婷狠狠| 97色伦另类图片小说视频 | 五月婷婷五月天| 亚洲网视屏| 五月丁香欧美综合| 天天干天天 亚洲| 丁香色五月直播| 99色色网| 久久五月天大美女| 五月天激情小说电影| 五月色丁香综合| 天天弄天天爽| 夜夜爽日日躁| 五月婷婷久草在线视频综合| 情久久综合五月天| 五月婷激情影院| 丁香六月婷| 天天干天天干天天| 五月伊人网| 久久免片| 成人片黄网站色大片免费毛片| 激情婷婷五月天| 嫩草AV久久伊人妇女超级A| 五月婷在线| 狠狠色成人影片| 丁香六月激情| 123日本不卡在线| 国产全是老熟女太爽了| 久久九九热re6这里有精品| 久9热插入| 久久综合五月情| 69精品无码一区二区三区| 成人在线视频一区| 久久久com| 亚洲另类婷婷五月丁香在线播放| 五月天综合区| 激情婷婷五月| 婷婷金品综合视频| 97日韩无套内| 亚洲一级AV在线免费播放| 丁香五月综合婷婷| 亚洲久久婷婷丁香五月天| 婷婷综合爱| 天天综合 99久久婷婷| 91久热| 极品少妇XXXX精品少妇偷拍| 天天日夜夜爽| 婷婷激情五月天桃花网| 久久久99久久| 深爱丁香激情| 五月天丁香综合久久国产| 色婷婷五月天| 99啪视频在线观看| 婷综合| 亚洲尤物在线| 91丨九色丨熟女丰满| 99久久网站| 婷婷在线视频| 无码色综合| 伊人激情| 激情婷婷五月社区| 人人草人人爱| 97午夜一区二区| 九九狠狠干| 中文字幕丰满乱孑伦无码专区 | 六月色激情| ,99视频久久| 五月丁香六月婷婷欧美综合| 日日操天天操| 国产成人AV在线播放| 第二色AⅤ| 婷婷深爱五月天| 免费精品99| 久久hd| 色之综合网| 婷婷性色| 三级毛片视频| 啪啪啪大香蕉| 激情五月激情综合网| 国产亚洲精品久久久久久牛牛| 色情开心五月| 激情五月,深深爱五月| 大香蕉五月丁香| #NAME?| 开心丁五月| 激情五月婷黄版| 久久大香蕉丁香| 97色碰| 天天在线XXX| 日韩综合成人| 夜夜骑操AV| 色天五月天在线观看视频| 亚洲国产无线乱码在线观看| 五月丁香婷婷综合久久| 色播五月| 国产jd1024基地手机看国产| 九九免费视频在线| 99久久网站| 2013AV天堂| 青青草原99热| 日韩艹比| 五月丁香WWW| 婷婷色色五月天| 成人网丁香五月| 久久五月婷综合网| 亚洲天堂热| 丁香六月色婷婷| 一本色道久久综合狠狠躁小说| 操大屄五月天视频| caopeng97日韩| 精品久久99| 日本色色色| 啪啪综合| 色婷婷久久综合| 天天做天天爱天天做| 51精品国自产在线| 天天久综合网永久入口18| 99热久久这里只有精品| 激情小说在线视频| 无码色色色色色| 99熟女| 日本欧美在线| 六月婷婷五月天| 婷婷久久影院| www.婷婷.com| AV网站免费在线| 综合五月网| 97干在线免费| 婷婷天天日婷婷| 97色一二三| 五月天中文字幕在线婷婷| 少妇性BBB搡BBB爽爽爽视頻| 天天摸天天爽| 9热网站| 五月丁香网视频| 色五月激情五月天| 4399在线观看免费高清电视剧| 丁香五月电影| 青草性爱视频| 超碰在线观看三级片| 色婷婷五月综合在线| 五月丁香影院| 五月天激情.com| 日韩小视频在线99| 五月天婷婷激情| 婷婷97碰碰| 99色婷婷视频| 久久99热这里只有精品23| 中文字幕欧美日韩VA免费视频| 日韩无码人妻一区二区三区综合 | 五月天激情综合网站| WWW.桔色成人.COM| 色综合综合网| 久久99精品久久久久久噜噜| 人人操人人爰人人一天天碰夜夜拍夜夜爽-中国A级毛片天天看天天谢… | 中文字幕在线观看视频www| 激情五月丁香色婷婷| 五月丁香六月激情| 五月天激情视频| 色色丁香婷婷| 超pen个人视频97| 啪啪啪啪五月天| 啪啪操网| 99九九久久| 色综合爱综合| 色婷九九九| 婷婷九月| 思思热久久久在线| 97人人搞| 亚洲爆乳无码精品AAA片蜜桃| 久久婷婷五月综合色丁香| 丁香婷婷五月综合| 99色色网| 色五月五月丁香| 狠狠久综合| 精品久久人妻| 伊人啪啪网| 久久性爱视频| 一本到不卡高清DVD| 色婷婷偷拍| 久色成人| 伊人久久大香蕉网| 99原创自拍视频在线观看| 婷婷综合五月天| 激情q青青草在线婷婷| 天天视频精品9| 深爱五月激情| 精品无码色欲AV| 99热久97| 亚洲AV日韩无码| 99热这里只有精品23| 久久精品91视频| 人妻丰满精品一区二区A片 | 精品久久穴| 97精品自拍| 天天日天天日天天搞| 9 1超碰九色| 97操在线| 国产激情综合五月久久| 丁香激激情网| 激情文学 综合 色| 91九色无码日韩| 丁香五月综合网| jiZZdr| 婷婷人人操| 这里只有精品9| 五月丁香婷婷激情在线视频| 婷婷97碰碰| 色五月美女| 丁香六月婷婷久久综合| 国产成人av在线播放| 日日日天天干| 五月激情丁香五月宗合| www.99精品视频| 激情人妻蜜夜系列区| 特级西西4444www无码| 日本五月天网站| 伊人狠狠干| 26uuu四色| 日韩久久视频| 成人在线日韩欧美| 九久热| 99热在线观看| 99在线观看视频| 看久久性爱视频| 天天操九九插| 五月久久噜噜| 99色色热| 婷婷丁香五月综合| 一本久道综合99| 狠狠久久婷| 91操黄| 久久精品A片777777| 激情婷婷五月天| 午夜色婷婷| 亚洲一区二区无遮挡A片| 国产色色色色| 日在线V视频在线播放| 狠狠做六月爱婷婷综合aⅴ| √天堂资源在线人妻熟女| www.婷婷激情网.com| 激情都市另类| 爱久久小说下载网| 影音先锋秋秋五月婷婷| 亚洲性爱AV在线| 亚洲九九99精品视频在线播放| 国产精自产拍久久久久久蜜| 精品婷婷| 婷婷色情 | 成人无码精品1区2区3区免费看| 中文字幕有多少字| 这里只有精品96| 亚洲AV无码电影| 成人五月天。COM| 啪啪啪丁香五月| yazhochengrenavwang| 婷婷影院欧美| 97碰| 五月丁香六月色婷婷综合五月天| 热热久久精品视频| 伊人超碰| 狠狠久久婷五月综合色| 丁香婷婷色五月天| 色五月婷婷久久| 丁香五月av| 五月天伊人综合| 五月天六月色| 亚洲激情久久| 影音先锋男士资源网一区| Av在线资源| 欧美VA视频| 欧美天天草人人草| 五月丁香婷婷五月色| 丁香五月天的网址。| 夜夜夜夜撸夜夜操| 婷婷五月天激情小说| 天天插综合网| 97在线视频观看| 老司机视频lsj爱就色| 日韩成人综合| 九色婷婷| 五月丁香六月婷精品视频| 99re思思久久| 亚洲综合视频在线| 亚洲国产精品VA在线看黑人| 色色六月| 日韩综合久久| 这里只有精品在线播放| 狠狠xx| 思思热精品在线| 成人国产欧美大片一区| 玖玖五月丁香| 99色色热热| 狠狠色噜噜狠狠| 精品99在线| 亚洲激情在线| 激情久久月| 婷婷在线播放av| 性天天中文网| 香蕉综合在线| a级毛片一区二区免费视频| 91人人操人人看| 狠狠肏综合网| 激情都市丁香婷婷| 精品人妻在线| 丰满老熟妇BBBBB搡BBB| 蜜桃婷婷狠狠久久综合| www。88热在线视频免费观看| 欧美啄木乌丝袜人妻系列| 国产无套精品一区二区| 中文AV网站| 7月婷婷六月丁香| 色欲五月婷婷| 79精品视频在线观看,| 久久婷婷老| 网色99| 精品亚洲VA网站| 狠狠干,狠狠操| 色婷婷综合丁香五月天| 丁香五月婷婷性爱| www.久久99热地址发布| 久久婷婷五月天激情新地址| 丁香五月天啪啪| 婷婷五月天黄色小说| 久久99热这里只频精品6学生| WWW.久久久久久久久久久久久| 天天插天天日天天爽| 丁香五月最新地址| 色婷婷亚洲婷婷| www.久久久久久久| 久热这里只有精品视频免费观看| 香蕉久久国产AV一区二区| 婷婷黄色五月| 天天色天天色天天色天天色天天色| 丁香五月性爱| 99视频在线观看网址| 激情 婷婷 插| 国产FREESEXVIDEOS性中国| 先锋资源91| 五月花激情| 国产肥白大熟妇BBBB视频| 99视频内射三四| 成人色五婷婷| 久久草大香蕉| 激情五月天色色网| 天天干天天干天天操| 亚洲欧美成人在线观看| 五月丁香色婷婷伊人| 婷婷五月综合在线| 成人丁香五月婷| 婷婷五月综合激情免费视频| 大地9中文在线观看免费高清| 色婷婷视频| 婷婷六月天| 久久综合五月| 天天谢天天操| WWW.HENHENL.| 久久精品小视频| 在线理论片| 亚洲五月天第一综合干| 丁香五月六月综合激情| 丁香六月激情四射| 久久久香| 日本色色网站| 亚洲成人中心| 激情综合在线播放| 日日肏天天操| 成人国产网站在线免费看| 婷婷五月综合欧美在线播放| 天天爽天天爽| WWW.夜夜操.com| 五月天啪啪| 激情五月深爱五月观看| 天天精品视频免费观看| 激情五月天色网站| 色色色图| 久久99综合| 婷婷爱五月天| 丁香婷婷激情综合五月激情| 激情AV| 六月丁香五月激情亚洲AV| 极品少妇XXXX精品少妇偷拍| 丁香婷婷五月天色综合| 中文字幕按摩做爰| 五月天婷婷在线啪啪视频| 人妻丰满精品一区二区A片| 激情五月丁香色婷婷| 超碰在线caop| 就爱射中文字幕资源网| 青青操日本摸摸看看| 午夜丁香五月天综合| www.五月婷| 久热免费视频| 9久久精品| 九九热这里只有精品6| 天天舔天天摸天天射| 成人做爰高潮A片免费视频| 亚洲另类久久| 欧美色偷偷大香| 9月色婷婷| 欧美久热| 激情五月婷婷| 激情五月www| 婷婷99丁香| 超碰成人在线观看| 成人欧美一区二区三区在线观看| 最近中文字幕在线中文视频| 丁香五月在线观看完整版| 久久久久五月丁香| 91人人爽狠狠狠| 狠狠狠婷婷五月综合| 激情五月天久久| 九九热在线视频观看| 日韩综合网络男女香蕉a片| 久草热在线视频| 只有久久精品免费| 丁香五月久久社区| 六月激情婷婷| 99热日本| 免费播放片大片| 饮料下药迷倒漂亮女同事强干| 六月婷婷狠狠做| 一本狠婷婷综合| 激情五月丁香五月| 日本婷婷丁香五月| 国产精品岛国片在线观看免费| 五月丁香六月激情综合| 婷婷 激情 五月| 久久99久久99www| 超碰99热| 天天操夜夜玩!| 高清成人综合| 久久久97| 99精品综合视频| 欧美激情伊人| 99激情| 开心婷婷五月天激情网| 五月丁香六月香香蕉| 色五月天婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷 | 人人操97| 五月综合在线婷婷图片| 偷拍九九五月丁香婷婷| 99人妻碰碰碰久久久久禁片| 26uuu国产精品| 大香蕉久久久| 婷婷99狠狠躁天天久久久九九九| 亚洲综合视频网| 熟女乱论网| 99re视频在线| 九九视频在线观看视频6| 日本色五月婷婷| 午夜青草资源| 婷婷丁香五月天影院 | 亚洲第精品| 久久伊人9| 曰韩少妇内射免费播放| 亚洲综合另类| 九九视频热| 狠狠综合| 久碰久| www免费在线视频| 激情久久久久| 九九色热| 热久久66| 婷婷五月天受日本法律保护| 久热re在线视频| 字幕网AV中文字幕| 欧美成人精品A片免费一区99| 69er小视频| 激情深爱综合| 2016日日夜夜操| 国产特黄色精品一区二区三区精品无广告| AV九九| 久大香蕉| 丁香五月婷婷激情中文| 婷婷丁香五另类网站| 色婷婷www| 91丨九色熟女丨首页| 一级片操逼视频| 国产激情综合| 色色色地址| 玖玖婷婷五月天| 3www激情| caobi四区| 天天爽天天爽天天爽天天爽天天爽| 五月婷婷综合性爱噜噜| 嘿嘿视频免费看9| 国产99久久久国产精品免费看| 婷婷大香蕉| 亚洲人妻电影| 五月天播播中文字幕| 六月99天天婷婷激情综合| 日韩狠狠色| 久久免费操| 天综合日日夜综合7799| 久热精彩视频98| 国产亚洲精品AAAA片APP| 亚洲成人网站在线观看| 久久久婷婷婷| 久久综合99| 婷婷五月免费视频| 婷婷激情视频欧美视频自拍视频欧美剧 | 亚洲AV成人在线| 操日视频| 亚洲天堂啪啪| 婷婷性福五月天| 激情小说在线视频| 五月天激情丁香| 婷婷色五月色| 久久婷婷五月免费视频| 五月婷婷六月基地| 婷婷五月天综合小说网| 日日操日日射| www.激情五月天| 五月播播| 亚洲五月色| 九九99精品视频在线观看| 激情小说五月欧美亚洲丁香| 婷婷五月综合激情免费| 直接看的AV网站| 欧美丁香婷婷五月天| 欧美成人精品一区二区| 99色免费视频| 久久久久这里只有精品| 俺去也五月天| 超碰色色综合| 26UUU欧美激情一区二区| 久综合网| 26uuu国产| 亚洲经典三级| 色域五月丁香| 丁香婷婷综合色五月激情国产基地| 热九九九九| 欧美日韩成人在线免费| 91久久综合亚洲鲁鲁五月天| 婷婷放心五日爱| 五月婷婷六月丁香免费| 色婷婷激情小说网| 婷婷色系婷色| 99re思思热久久| 久久久精品AV| 亚洲av骚货| 国产精品久久久爽爽爽麻豆色哟哟| 大色鬼综合| 99免费青青蜜臀| 激情五月天色色色| 激情婷婷在线中文字幕| 激情无码五月天| 色综合性视频| 六月综合婷婷开心伊人| 亚洲六月色婷婷| 婷婷五月在线视频| 天天综合天综合久久网| 婷婷狠狠狠爱| 五月天婷婷影院| 日本va网站| 五月天婷婷成人| 可以直接看的AV| 国产午夜精品一区二区三区四区| 91久久精品视频| 91精品国产99久久久久久天美| 婷婷激情五月天激情在线| 99爱在线| 思思久久99热只有频精品66| 丁香六月激情| 久久99热这里只频精品6学生| 激情综合文学| 91色综合| 国产欧美日韩综合精品一区二区 | 亚洲综合五月天婷婷丁香| 操人91| 久久久久亚洲AV综合| 成人无码免费一区二区中文| 五月婷久久久| 激情小说五月天中文字幕| 五月婷婷丁香综合网| 亚洲综合色色| 亚洲国产精品二二三三区| www热久久yy9| 色色婷五月天| 五月六月丁香激情| 99精品综合| 婷婷不卡基地| www.粉嫩av.com| 天天综合中文| 思思热视频| 久久33视频| av九九| 九九在线这里只有精品视频| 婷婷天天色| 丁香五月婷婷影视先锋| 亚洲色9| 伊人婷婷五月天av| 久久视频婷婷视频| 啪啪五月婷婷| 久热这里只有精品性色AV| 欧美Va日本Va| 婷婷五月天97干| 天堂久久精品| 99热6色| 久久婷婷精品| www.五月婷婷.com| 天天爽日日爽夜夜爽| 99色婷婷| 人妻激情视频| 狠狠五月激情在线| 婷婷综合97| 91免费试看| 79精品在线视频| 五月丁香av中文| 色色五月丁香婷婷综合| 五月婷婷成人网首页| 婷婷97| 激情 久久 婷婷| 99热这里有精品6| 欧美99热| 国产一二三四五六七八视频| 色999亚洲人成色| 久久色婷婷| 五月天综合在线观看| 精品香蕉99久久久久网站| 久9精品| 五月丁香六月婷婷久久| 91919191919久久成人视频| 久久99久久99精品免视看婷| 丁香五月六月婷婷综合| www.9色色色| 综合网激情五月天| 色婷婷啪啪| 亚洲色视频| 五月丁香激情四射| 亭亭五月色男人| 天天色中文字幕女优AV| site:esunnet.com| 亚洲超碰在线| 狠狠色婷婷| 久99视频在线观看| 日亚二欧美| 天天弄天天操| 久久sp免费视频| 我要射综合| 国产婷伊人| 免费试看小视频 99| 国产欧美日韩综合精品一区二区| 丁香五月婷婷婷婷欧美综合| 在线视频另类| 91久久综合亚洲鲁鲁五月天| 激情av在线| 91凹凸在线| 精品女人九九九| www.com.色色| 日本婷婷五月天| 亚洲综合一区二区| 亚洲热综合| 国内久久亭亭| 亚洲成人av在线播放| 久久久精品99| 五月婷婷在线观看黄| 色欲影香| 在线视频激情网站| 91干视频| 丁香色婷婷五月天| 婷婷色在线观看| 99这里只有| 99极品视频| 亚洲综合色网| 五月丁香网中文字幕| 久久桃花网色婷婷| 五月婷婷视频ab| 五月婷婷婷色| 亚洲操操操| 九九 激情 网| 亚洲天堂久久| 六月婷婷六月天天在线免费| 丁香六月啪| 亚洲 在线 性爱| 色九九九综合| 五月花在线观看视频| 伊人9在线| 亚洲成人在线播放| 秋霞免费三级片| 丁香激情五月天| 五月天婷婷青青草| 亚洲天堂青草| 色综合丁香婷婷| 人人干天天舔| 五月丁香综合激情| 五月天婷婷激情干干| 亚洲av另类在线观看| 五月天成人在线视频网站| 日本一级特黄大片AAAAA级| 99精品免费视频| 五月激情婷婷播播网| 色综合婷婷99| 性天堂久久| 五月天激情站| 99久久精品免费精品国产_国产精品久久久久久_国产在线|日韩_久久国产精品电影 | 欧美日本日韩| 婷婷丁香五月亚洲免费| 五月丁香六月婷婷的女人| 超碰av在线| 天天综合亚洲综合| 97超碰9久热婷婷热| 97人人做| 五月天婷婷青青| 久久久久久9热不雅视频| 99热免费精品| 天天爱天天做综合| 色九九综合色| 亚洲综合激情五月久久| 玖热精品综合视频| 婷婷99视频全集高清| 婷婷五月天社区| 精品无码av丁香五月激情| 9l久久久视频| 亚洲啪啪视频| 狠狠操在线视频| xx久久| 五月天婷婷基地| 五月天网站免费欧美| 久久久久久天天日天天爱| 欧亚中文A V| 日韩无码成人电影| 久色五月婷婷综合| 欧美视频五区| 99热爆在线| www夜夜操|