欧美成人午夜精品久久久,国产?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
返回資訊列表
五月婷婷丁香瑟瑟视频| 殴美激情综合网| 思思99久久| 五月丁香在线国产| 久久亭亭电影| 天天舔天天插天天爱| 99精品在线| 热99国产精品| 性生生活大片又黄又| 日本在线免费中文com.| 日笨久久网| 99A片| 在线免费观看激情视频| 囯产精品久久欠久久久久久九大| 婷婷五月天美女21p| 正宗黄色毛片| 久久久99精品免费观看| 日韩另类在线观看| 丁香五月1页| 亚洲最大成人综合网720P| 中文久久婷婷| 色五月婷婷大| 成人 在线 日韩| 国产这里只有精品| 99精品热| 性爱视频久久| 五月天另类综合网| 丁香五月婷婷亚洲色图| 色色色地址| 激情五月天网| 九九AV在线| 九九热在视频| 欧美 日韩 成人 在线| 激情综合网五月激情| 呦呦v线| 婷婷午夜精品久久久| 国产免费一区二区三州老师F1……| 激情六月色| 啪啪啪啪五月天| 秋霞网在线免费基地五月婷婷丁香| 激情五月天色色| 99热在线中文字幕| 99热这里只有精品69| 久久狠婷婷| 九九碰九九爱97超碰| 婷婷涩涩五月天| 99色色热| 我要看激情五月天| 欧美色小说婷婷| AV动漫不卡无码免费| 久久婷中文字幕| 婷婷色基地在线看 | 婷婷五月花| 亚洲性爱干干| 思思热在线视频观看精品| 久久婷五月婷| 香蕉狠狠爱视频| 狠狠色五月| 色色色九九九五月婷婷| 中国女人做爰A片| 色五月中文网| 婷婷婷婷婷开心无码播放| 丁香五月六月欧美| 婷婷色综合av| 天天爱天天做天天| 婷婷亚洲天堂| 少妇水多A片太爽了| 碰碰人人人| 久久人妻精品| 91n啪啪| 免费超碰在线| 九九热这里有精品视频| 婷婷五月深深爱| 丁香五月激情综合| 欧洲激情五月天婷婷| 操97| 热热久久99| 丁香五月AV综合激情| 色婷婷五月天堂资源| 久久曰曰| 亚洲色欲欧美一区二区三区| 天天爽天天爽夜夜爽| 色五月婷婷内射| 狠狠另类视频| 五月天另类激情在线| 思思国产99| 蜜桃人妻无码AV天堂三区| 91操熟女| 伊综合蕉| 青996青| 欧美婷婷精品激| 婷婷爱爱蜜臀天天操| 色播五月丁香| 激情五月天综合| 五月天婷婷爱| www.色婷婷.com| 婷婷在线五月综合| 五五月丁香花激情综合网| 精品九九视频在线观看| 99综合| 婷婷五月在线影院| 任你擦免费视频| 他改变了拜占庭| 啪啪婷婷五月天激情| 色婷婷AV久久久久久久| 色五月激情五月| 国产伦亲子伦亲子视频观看| ww亚洲ww在线观看| 亚洲AV成人精品日韩在线播放| 狠狠色丁香| 婷婷五月花| 99热在线观看精品| 婷婷深爱五月天| 五月天激情国产综合婷婷婷 | 国外亚洲成AV人片在线观看| 九九久久腿| 超碰在线网站| 激情婷婷五月社区| 日本色99网站| 久久综合这里只有精品1 | 婷婷五月天在线观看| 国产成人精品一区二三区熟女在线| 百度4399有码精品V在线观看| 99热日韩这里只有精品| 激情综合网五月天| 婷婷丁香五月天熟女丝袜| 大香蕉人在线65| 九九色精品| 久久996re热这里只有精品无码| 色色色色色爱| 99精品综合视频| 五月天婷婷色播综合在线| 麻豆123区| 一根材五月婷成人| 少妇AB又爽又紧无码网站 | 99热这里精品| 超碰97色| 激情综合五月| 人人性久久| 丁香五月综合在线观看| 欧美一级色| 激情性爱五月| 大香蕉婷婷| 射区导航| 91久久久久久| 五月婷婷亚洲天堂激情在线| 久操操| 9 99免费视频| 亚洲综合五月| 激情网站五月| 99热国品| 五月天婷婷在线AN| 5月丁香美女影院| 久鲁鲁色网| 激情六月色| 九九九九无码| 午夜成人AV在线| 久草五月丁香婷婷综合| 青草热视频这里只有精品| 久久精品99| 九九九热精品| 影音先锋一区| 99热播放| 久热一本| 色五月丁香一区在线| 国产亚洲精品久久久久久豆腐| 九玖视频这里只有精品| 欧美婷婷丁香社区在线播放| 天天狠狠六月婷丁香影院| 91av视频| 亚洲色色香蕉| 激情五月天色网站| 日韩AV免费看| 日日噜狠狠色| 色婷婷色99国产综合精品| 五月丁香婷婷综合| wwwxxx五月婷婷小说| 99九九这里有免费视频| 91色操| 91在线观看www| 免费亚洲婷婷五月| 日操五月婷| 日韩五月婷婷久久| 天天想夜夜爽天天爽| 国产乱妇无乱码大黄AA片| 九九热区一区二区三区| 日韩一级A片黄色| 激情图片五月天| 婷婷五月天色网久| 色婷婷六月天| 91综合在线观看| 99热久草| 逼里香不卡| w婷婷五月婷婷w| 看片视频在线免费日产在线看| 五月丁激情| 日韩精品在线观看9| 婷婷五月色激情欧美激情| 久久久精品AV| 久久久久97| 久9久9久9久9久9久9| 色婷婷色五月另类综合| 色婷婷色九月| 玖久久网站| 色99热| 丁香 婷婷五月| 天天色凹凸| 狠狠草狠狠草| 天天做综合网色综合| 久久9RE热视频精品98| 天天色色天天| 色99自拍| 99视频精品全部免费观看| 久操香蕉| 三男玩一女三A片| 五月天四色房丁香亭亭| 综合激情五月丁香9999久久精| 日本在线播放97| 97人人操人人爽| 婷婷五月天熟妇| 黄色AV日韩| 婷婷九九色| 色噜噜婷婷| 色五月婷婷综合在线| 成人午夜无码视频| 亚韩在线视频| 中文字幕日韩成人| 六月大香蕉| 亚洲日韩乱码一区二区三区四区 | 九九色色网| av性爱在线| 色青青五月| 色婷婷六月天| 成人av在线电影| 九九成年视频| 9|在线观看视频| 99热这里只有精| 99ri在线视频| 五月成人网站| 夜夜骑夜夜操| 婷婷激情综合网| 色噜噜综合网| 丁香六月婷婷综合缴| 777丁香六月青青草婷婷综合久月| www久久99| 99久热精品在线| 国产精女同一区二区三区久| 在线观看欧美3区| 国产毛片精品一区二区色欲黄A片 国产人妻777人伦精品HD | 亚洲情综合五月天| 国产又色又爽又黄又免费| 激情五月影院| 粉嫩AV久久一区二区三区| 五月激情小说| 无码激情AAAAA片-区区| 久久久久久婷| 日韩免费99| 综合色网站| 玖玖婷婷色五月| 久re热视频| 亚洲免费视频网站| 天堂色婷婷| 91丨九色丨高潮丰满日本| 日本在线视频播放91| 91啪啪网| xxxx五月激情| 五月开心啪啪| 久久总和99| 亚洲网站999| 欧美在线97| 97人人操在线| 人妻熟女一区二区AV| 香蕉AV777XXX色综合一区| 欧美搡BBBBB摔BBBBB| 大地9中文在线观看免费高清| 涩涩五月天| 亚洲另类电影| 国产乱人偷精品人妻A片| 国自产拍偷拍精品啪啪一区二区| 丁香99| 人人干人人操外国| 青青草原中文字幕| 丁香五月六月婷婷怡红院| 婷婷五月天激情开心网| 深爱五月婷婷| 丁香花操逼| 综合久久影院| 五月婷婷精品视频| 五月丁香婷婷在线| 日韩成人不卡| 久久久.COM| 538在线| 天天日天天操天天干| 九九热只有精品| 天天干一干| 五月天.com| 五月色情| 日韩无码成人电影| 亚洲天天综合| 狠狠操综合| 九九精品9| 玖玖激情五月天| 99热在线观看精品| 一级操逼内射在线视频| 婷婷丁香六月天| 91黄色五月天视频| 樱花99视频| 国产玖玖资源| 欧美电影在线观看| 99热综合| 99热官网| 天天日日| 五月激情六月| 日日射天天射| 97深爱伊人综合| 五日激情综合| av网址在线播放| 欧美人人女女精品综合五月天| 色婷婷综合久色AV五色最新| 这里只有精品99视频| 色激情五月| 亚洲精品视频在线播放| 久久久大香蕉| 国产97色在线 | 日韩| 亚洲乱码日产精品BD| 免费看无码视频A级| www.五月激情.com| 婷婷在线播放| 激情五月天综合网站网站网站| 色五月丁香五月| 能看的av| 天天爽天天日人人爱 | 色五月丁香婷婷久草| 北京熟妇搡BBBB搡BBBB| 视频综合网| 激情开心五月天| 色五月丁香A欧美com| 色五月xxx| 色99自拍| ww久久| 五月亭亭狠狠| 久久久久久9热不雅视频| 99热精在线九九久久保| 久久婷婷五月| 激情五月婷黄版| 色五月婷婷啪啪五月| 久久婷婷六月综合综合| 婷婷五月天激情文学小说| 婷婷色色丁香五月天| 久久天堂色| 热99re| 做爰丰满少妇1313| 色情丁香五月天| 激情小说在线视频| 秋霞学生妹一二级| 欧美性猛交99久久久久99按摩| 色噜噜狠狠色综| 97资源欧美日韩大香蕉超碰一区| 人人97碰| 五月婷婷激情| 5月丁香综合网| 99色综合| 丁香欧美| 国产做爰视频免费播放| 中文aV网| 丁香婷婷综合影院| 色婷久| 99啪在线| 99热这里只有精品5| 五月丁香偷拍| 少妇高潮一区二区三区99欧美| 婷婷色九月| 超碰激情网| 五月天婷婷色| 综合久久婷婷99| 五月天激情无码专区| 夜色.cnm| 激情av| 色五月xxx| 国外亚洲成AV人片在线观看| 久久婷婷五月综合色和| 琪琪色热色色| 1000部毛片A片免费观看| 能看的av片| 成人国产网| 色色色色网站| 五月丁香六月综合情在线观看| 五月丁香婷婷综合| 国产欧洲欧洲精品久久| 99精品在线播放| 久久久GOGO无码啪啪艺术| 激情黄色小说五月天| 婷婷成人av| 五月丁香婷婷深深爱| 黄色五月婷婷| 美女久久天堂| 色999亚洲人成色| 丁香五月AV综合激情| www五月天com| 亚洲妇女熟BBW| 婷婷五月色网| 婷婷九月| 在线99精品| 99色色网| 色九九九九| 欧美噜噜免费观看| 99热国产婷婷| 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | 婷婷精品| 亚洲国产99| 色10月婷婷视频| 99爱在线| 色婷婷影院| 久久五月丁香| 天天干肏夜夜| 立川无码av| 伊人天堂婷婷| 色爱综合网| 五月丁香六月激情在线| 欧美色色色| 五月激情啪啪啪| 婷婷五月天99综合网站| 天天干天天拍| 综合色五月天| 99色色视频| 五月天播播综合| 91婷婷在线观看| 国产,欧美,学生妹,视频| 最新久久网址| 激情五月天婷婷在线网址发给我| 五月丁香六月婷婷在线播放| 色婷婷婷av| 亚洲xx网| 东北黄色一级| 丁香五月 无码| 亚洲国产无线乱码在线观看| 亚州色色色| 欧美激情综合色综合啪啪五月| 另类国产综合| 激情五月综亚网| 伊人婷婷五月天| 热99久| 青青草青青草五月天| 久久综合九九| 亚洲五月天激情| 成人在线视频网| 国产精品美女| 天天色天天日天天舔| A A色色| 五月色婷婷影视在线电影| 黄网在线播放| 久久婷婷五月| 六月亚洲婷婷6月中文字幕| 九九99免费理论| 久一网站| 色婷婷国产精品综合在线观看| 五月婷婷综合色啪首页| 国产三级在线播放| 啪啪东京热| 亚洲成人av在线观看| 欧美顶级少妇做爰HD| 亚洲精品又粗又大又爽A片| 五月丁香啪啪| 粉嫩AV久久一区二区三区| 五月天丁香网| 婷婷情色开心五月天99| 婷婷开心激情| 另类激情综合| 青草视频在线观看视频| 精品久9| 亚洲欧洲美女在线观| 夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂亚洲亚洲亚洲亚洲亚洲亚洲亚洲亚洲色 | 日本情色一区二区| 五月天婷婷免费| 97视频.干com| 丁香五月婷婷五月天在线| 色色综合色视频| 亚州欧美国产久精国产99综合视频| 4399在线观看免费高清电视剧| 26uuu美女三级视频| 欧美激情Va| 天天操九九插| 五月婷婷色五月| 久久99精品久久久久久噜噜| 99re这里只有| 丁香激情综合| 亚洲综合另类| 激情五月图| 99爱最新免费视频在线观看| 五月婷婷婷婷| 色中色综合| 婷婷五月天激情四射| 97精品人人A片免费看| 久久久91精品| 五月婷在线影院| 91久久久久久| 99re视频精品| 五月丁香啪啪综合| 五月婷婷激情在线| 日本一道久久| 久久久久99精品成人片| 超碰在线精品| 婷婷中文字幕网站| 97碰人人操| 天天天操天天天爰| 人人干人人操人人摸| 久久与婷婷| 极品少妇XXXX精品少妇偷拍| 五月婷婷丁香六月 | 丁香五月中文字幕| 五月天激情美女久久| 亚洲av午夜精品一区二区| 97碰碰人人| 婷婷五月激情在线| 久久99久久99久久99人受| 黄桃AV无码免费一区二区三区| 婷婷伊人五月| 五月婷婷av| 丁香五月之久操视频| 色婷婷a v| 五月天成人在线| 啪啪综合| 亚洲第二AV| 激情综合女人网五月播播| 丁香六月色婷婷| 五月天另类激情在线| 91精品综合久久久久久五月天| 色色精品色| 激情网五月| 97在线观看| 久婷五月| 99久久久久久www| 国产午夜成人免费看片无遮挡| 久久久久网站| 狠狠做深爱婷婷久久综合一区| 五月婷婷丁香六月| 五月丁香婷婷中文| pom538精品视频| 9热成人在线视频| 五月天激情综合首页| 欧美激情综合色综合啪啪五月| Blackedraw视频一区二区| 亚洲免费看片| 伊人五月婷婷| 亚洲色图81p| 天天舔日日肏夜夜爽| 精品久热| 国产乱码久久| 丁香五月激情啪啪| AV在线资源| 婷婷欧美| 婷婷狠狠97| 99久久精彩视频。| 老司机伊人| 91凹凸在线| 综合噜噜| 加勒比日本一区二区三区| 人人视频色| 国产午夜成人免费看片无遮挡| 夜夜骑日日操| 99这里有精品视频| 狠狠五月天婷婷| www.夜夜| 天天噪夜夜爽| 婷婷五月天免费99| 色五月综合网| 婷婷丁香精品视频在线观看| 99在这里有精品| 天天影院色| www.婷婷五月天.com| 97操视频| 性爱AV天堂| 婷婷五月天久久| 色色激情五月天| 丁香五月天堂网| 国产五月丁香在线| 欧美成人一区二区三区在线视频| 午夜精品777| av一级棒av| 五月丁香婷婷中文网| 久久婷综| 亭亭玉月丁香| VA色婷婷| 日本欧美成人片AAAA| 天天热夜夜操| 欧美操综合| 五月天操逼网| 色五月综合婷婷久久综合婷婷久久综合婷婷久久综合婷婷久久 | 【乱子伦】黄色| 六月婷婷五月丁香| 色情五月停停丁香| 久久人人九九| 亚洲色五月| 五月丁香啪啪啪啪| 色婷婷综合电影| 97丁香五月| 99色婷婷视频| 亚洲六月综合激情久久下卡| 亚洲美女网Va| 梁铮版《蜘蛛女侠》在线| 国产无套精品一区二区| 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | 亚洲秘 无码一区二区三区妃光/1| 超碰在线9| 五月天激情站| 五月天婷婷激情四射综合| 2017狠狠干| 五月丁香在线视频观看| 另类国产欧美视频| 丁香五月婷婷影院| 天天摸色吧天天摸色吧| 欧美A级网站| 婷婷五月天桃花网| 日本三级黄色大片| 丁香五月在线看| 91玖玖| 91精品激情9| 色色色综合| 千人斩操逼| 色综合香蕉| 亚洲人妻av伦理| 另类激情首页| 人人综合五月人人婷婷| www.色99| 淫荡A片| 年轻的妺妺伦理HD中文| 97视频.干com| 伊人啪啪网| 青青草a在线| 九九九九大香蕉| 亚洲国产精品成人午夜| 久久久噜噜噜久久人妻| 综合婷婷五月天| 亚洲Av入口| 五月婷色| 中美月韩免费A片| 99热人人艹| 97香蕉碰碰人妻国产欧美| 99热97| 亚洲综合色丁香婷婷六月| 色一情一乱一乱一区91| 九九九九九九九九九九九九九国产精品| 99成人| 亚洲午夜视频| 丁香美女五月天婷婷| 亚洲尤物在线| 热的国产,热的综合,热的有码 | 噜噜久| 久久久月丁香| 亚洲俩性性爱图片久久第六页| 综合久久高清| 欧美WW在线网| 免费啪啪啪网站| 五月激情婷婷偷拍| 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | 另类小说五月天| 伊人玖玖精品| 玖玖午夜视频| 99九九视频精彩在线| 五月播播| 九九视频这里有精品| 五月丁香激情综合六月涩涩爱| 九九RE视频在线精品| 一区二区免费看| 2022人人操人人看| 99玖玖在线视频| 色色色色色五月| 国产黄色av| 1囯产午夜仑鲁鲁| av电影在线播放| 色婷婷五月丁香色| 丁香婷婷老司机久操| 日本偷拍九九九| 在线观看欧美3区| 色欲色香综合网站| 懂色av蜜臀av粉嫩av永陈冠希| 97人妻人人| 九伊人网| 九色视频91| 狠狠干狠狠色| 99热在线免费观看精品| 最新五月天婷婷影| 婷婷色网站| 性天天中文网| 亚洲AV网站在线观看| 丁香九月婷婷综合| 色色亚洲| 色婷婷在线电影| 婷婷新网址| 熟女91九色| 99热99色| 26uuuu精品一区二区| 五月天激情AAAA| 丁香六月激情网C0W| 天天做天天爱| 婷婷天天色| 成人无码精品1区2区3区免费看| 青青草大香| 激情婷| 熟女激情网| 五月丁香成人日| 婷婷色狠狠| 久久婷婷色综合| 成人电影一区| 丁香操逼| 97色婷| 欧美综合在线五月天色婷婷| 丁香婷婷月| 26uuu最新地址| 性爱网五月婷婷| 黑人无码一区| 五月丁香直播| 五月丁香久久| 婷婷性爱| www91在线| 人人色婷婷五月天| 婷婷婷婷婷开心无码播放| 99色婷婷视频| 五月婷婷欧洲| 国产伦理精品高清在线观看网站一区二区 | 97色干| www.色色com| 婷婷丁香五月激情综合站_久久五月丁香激情综合_开心五月综合激情综合五月_婷 | 色婷五月| 六月丁香激情网| 我淫我色婷婷五月天激情四射| 丁香密臀AV激情网| WWW.桔色成人.COM| 五月婷婷基地| Aα在线免费观看| 凹凸探花电影| 五月天开心色情网| 99在线播放| 丁香 婷婷五月| 日韩精品一区二区亚洲AV观看| 久久精品99国产精品日本| 日韩在线成人电影| 久久机只有这里精品| 99ri在线视频| 色五月大香蕉婷婷| 69激情小说| 99视频在线精品| 人人操 色| 五月色丁香激情| 久热九九| 狼人婷婷久久| www.minyis.com【JT】实力收量可预付QQ2101460746 | 九九热思思| 人妻丰满精品一区二区A片| 婷婷99中文字幕| 久久久这里有精品| 亚洲狠狠爱婷婷| 人人澡天天色天天做| 五月婷婷深深爱| 91碰九色| 六月丁香成人网| 国产成人AV| 五月丁香久久综合| 99久热这里只有精品| 91啪啪网| 五月丁香色婷婷久久| 99re视频在线| 天天肏天天爽夜夜爽| 成人精品视频99在线观看免费 | 激情婷婷五月黑人| 99热这里只有精品2| 艹天天射| 日韩九九| 丁香五月婷婷www..com| 日本欧美国产| www99精品日韩| 亚洲日韩26uuu| 国产成人精品一区二区三区视频| 91精品久久久久久| 九九视频这里只有精品| 97热视频| 综合色五月| 91婷婷丁香五月天免费视频网站| 91操网| 琪琪色五月天| 在线中文av| 99热国产精品| 综合激情婷婷| 天天干狠狠操| 久久婷综| 91婷婷五月天嫩女| 久草狼人| 日日色综合| 成人天天爽| 国产AV一区二区三区最新精品| AV五月丁香| 婷婷色影音天| 人人操人人爱丁香五月| 欧亚中文A V| 丁香婷婷九月| 狠狠香蕉| 欧亚成人A片一区二区| 天天日天天操天天干| 五月色情精品| 色欲婷婷五月天丁香| 九九综合色| 国产精产国品一二三在观看| 欧美97p| 91窝窝| 亚洲视频操| 2014天天爽| 亚洲精品国产熟女久久久| 五月婷婷丁香色播网| 欧美啪啪五月天| 丁香五月网址| 色噜噜,噜噜色| 噢美99| 夜色综合网| 婷婷五月激情热播| 超碰cap| 超碰色色综合| 干婷婷五月天| 99热在线网站| 综合网亚洲| 久久这里只有国产视频| 色婷婷国产精品综合在线观看| 五月丁香偷拍| 这里只有精品在线免费视频| 欧洲S级在线观看| 99色视频| 天天干天天拍| 五月激情婷婷开心五月| 亚洲Av成人在线观看| 色综合色色| 欧美激情综合色丁香婷婷五月天| 五月婷婷综合久久| 99久久九九视频| 狠狠色五月| 99久久思思| 久久看婷婷| 九九亚洲天堂| 激情五月丁香五月| 思思精品热在线| 青青热视频| 香蕉五月婷婷| 亚洲综合色网| 色色色热热热| 日日干日日s| 五月丁香六月综合基地| 果冻传媒A片一二三区| www九九| 开心五月丁香啪| 久久9久| 五月色婷丁香| 99国产精品久久久久久久久久久| 色色色婷婷| 婷婷五月天色综合| 思思热99er在线视频| WWW.久久久久久久| 天堂网亚洲色图| 欧美在线视频99| 久热 91| 5月婷婷五月天| 婷婷丁香五月天综合网| 美女激情综合| 奇米网大香蕉| www.夜夜爱.com| 精品一二三区久久AAA片| 久婷五月| 99在线视频播放| 天天色综合网1| 婷婷五月天视频小说| 九九人人操| 色婷婷久久综| 五月丁香久久综合色| 国成人网| 色色色色色色综合网| 九九99久久| 婷婷五月无码| 99久在线精品99re8热| 91无码高清| 99久久这里只有精品| 久久九九视频| 五月丁香婷爱在线| 天天做天天爱综合| 亚洲一区二区无码蜜乳av| 婷婷五月综合欧美在线播放| 色情五月天小说| 色婷婷狠狠18禁| 欧美丁香五月97色| 日韩性视频| 天堂资源欧日浪女在线播放| 99re久热只有精品6在线直播.com| 色婷婷影音| 激情骚五月| 怡红院成人AV| 亚洲综合另类| 99乱视频| 久久九九爽| 欧美色五月| 在线观看熟女少妇| 思思久ren热| 婷婷五月丁香综合激情小说| 亚洲丁香五月天在线视频| 狠狠88综合久久久久噜噜噜| 99er国产| 中文字幕日韩无码制服诱或| 久噜久噜| 五月丁香婷婷成人网| 性色五月天| 午夜丁香综合婷婷| 六月婷婷色综合| 久久人妻精品| 六月成人网| 丁香五月伊人| 五月天伊人久久久久| 欧美啪啪9| 26uuu青青| 五月花成人网| 亚洲欧美另类在线23p| 亚洲热视频在线| 九色91国产| 丁香九月激情| 秋霞九九无码| 六月丁香色色色| 无码色色色色色| 99热首页在线30| www99热| 97人人操人人| 色婷婷成人做爰A片免费看网站| AV色色天堂中文| 狠狠色丁香久久婷婷综合五月| 成人短视频在线观看| ...婷婷国产成人亚洲日韩| 日日操,夜夜撸| www.婷婷| BBWCUCKOLD精品熟妇| 97sese婷婷| 久热久| 欧美va亚洲va在线播放| 久久婷婷综合国产| 久青草影院| 丁香五月手机视频| 五月色婷婷亚洲| 天天做天天爱综合| 99精色| 欧美一级a| 色婷婷狠狠18禁| 色综色五月天婷婷| 五月伊人网| 婷婷丁香五月天综合激情| 在线不卡中文字幕| 狠狠va| 五月丁香六月| 九九热超碰| 最新久久99视频网站| 99 热| 久久99热这里只有精品| 99热伊人| 日本天堂免费99| 婷婷玉月丁香五月在线视频| 99九九热视频| 五月婷久久久久综合| 五月婷婷久久综合| 九九热99热| 专区无日本视频高清8| 另类亚洲视频| 我要看激情五月天| 99热在线播放| 吊色AV男人的天堂| 五月天停停基地| 日本色五月| 日本3级片一区2区| 欧美成人精品一区二区| 99热这里有精品| 激情綜合網址| 五月天激情av| 国产乱子轮XXX农村| 123草逼网| 久久久久久人妻久久久久久久久久人妻久久久| 婷婷五月激情综合| 97色片| 青青草五月天| 99国产99| 婷婷六月插屄激情| 天天爽天天操| 综合久久9| 开心五月天激情网| 91日本在线免费| 少妇人妻凹凸视频| 狠狠狠狠狠| 99热99网| 欧美婷婷| 亚洲无码播放| 亚洲性视频| 嫩草国产| 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | av免费在线看不卡无毒| 激情婷婷五月女| 色综合色综合网| 欧美视频五区| 亚洲婷婷久久综合| 丁香五月123| 噜噜色婷婷| 婷婷丁香大香蕉| 五月婷婷婷婷婷婷艺术| 亚洲V国产V欧美V久久久久久 | 丁香六月无码播放| 97人碰人操| 天天干天天色天天干| 99国产在线精品视频| 色欲Av五月天| 少妇性按摩无码中文A片| 色综合色综合婷婷热| 五月天激情国产综合婷婷婷| 色色精品色| 色综合婷婷| 5月婷婷综合| 99视频内射三四| 天天色天天爱天天舔| 大学生高潮无套内谢视频| 第二色AⅤ| 色五月情| 婷婷五月天激情综合网| 97午夜一区二区| 丁香五月天激情网| 婷婷久久色| 囯产精品久久欠久久久久久九大| 五月婷婷六月丁香首页| 五月天婷婷伊人| 婷婷久久亚洲| 五月婷婷开心网| 天堂婷婷五月色| 北条麻妃九九九国产精品视频| 天天综合天综合| 97热久久| 色色色9| 一个色的综合| 百度一下国产精品A| 激情综合五| 第四色激情网| 欧美日韩成人在线| 丁香婷婷色五月合集| 久久九九囯产| 婷婷五月丁香久久| 开心亚洲久久开心| 国产操B| 五月天成人免费视频| 91精品久久久久久| 少妇人妻丰满做爰XXX| 999热在线视频| 超碰在线9| 这里有精品| 十月色综合| 综合激情五月丁香| 最新无毒无码AV| 色婷婷六月| 99视频色在线观看| 伊人九九九久| 五月大香蕉| 99这里只有精品在线观看| 久久图色4| 婷婷综合五月| 五月激情综合美女久久| 超碰超碰在线| 亚洲三A| 婷婷激情在线| 五月天欧美 另类小说| AV免费在线网站| 婷婷在线精品| 日狠狠| 六月婷婷六月天天在线免费| 美女被肏网站在线看| 欧美在线视频99| 五月综合激情视频| 婷婷99视频精品| 亚洲婷婷性爱| 日韩人妻无码专区| 色狠狠色噜噜噜a天堂一区| 99热综合网| 色婷婷五月天av在线| 综合激情五月丁香| 日日舔夜夜操| 婷婷五月天日本国产| 男人的天堂五月丁香| 人妻日日日| 五月天激情小说| 亚美欧色影院| 亚州激情在线视频| 站长推荐无码播放| 亚洲啪啪自拍| 成人无码髙潮喷水A片| 九热视频在线精品15| 都市激情小说婷婷| 五月情丁香色| 99re视频在线播放| 噜噜五月天综合| 国精产品一区一区三区免费视频 | 色五月在线视频观看| 久久人妻爱爱| 丁香九月婷| 丁香五月综合久久综合| 久久婷婷免费| 最近韩国日本免费高清观看| 日韩欧洲亚洲| 人人草人人舔| 色五月第四色| 五月婷婷综合色啪首页| 五月婷丁香花| 夜夜 操无码| 五月激情婷婷国产精品久久久久久| 无码视频国内精品久久久| 天天操婷婷| 日本精品99| 五月天婷婷色色网| 97热这里只有精品| www.99成人视频| 婷婷爱婷婷| 综合色五月天| 干亚洲天堂| 99热大全在线观看| 婷婷综合网站| 91九色国产在线| 天天操中文字幕| 97五月婷婷| 五月婷综合激情| 欧美色色日韩| 丁香香蕉婷婷| 丁香五月大香蕉AV| 亚洲免费电影2| 最熟少妇乱码| 99热在线播放精品| 人人操婷婷| 狠狠色婷婷综合开心影视| 日韩天堂久久| 婷婷六月情| 久久欧洲综合网| 青草热视频这里只有精品| 亚洲五月丁| 五月综亚洲| 色婷婷色五月丁香| 五月色欧美| 天天干天天操天天上| 亚洲另类婷婷五月综合| 色插综合网| 久久66精品| 伊人久久丁香婷婷六月五月综合| 欧美成人精品老美女噜噜噜| 五月丁香婷婷俺| 婷婷五月天色| 色婷婷超碰| 婷婷色导航| 99亚洲天堂| 欧美69久成人做爰视频| 99色人| HD久久精品视频| 久久9热| 99久久99久久综合| 亚洲 激情 中文| 色五月婷婷久久大| 综合网视频| 日韩在线9| 日日夜夜天天| 日韩一本操| 卡视频1区2区| 欧美婷婷丁香五月社区| 深爱五月综合网| 伊人五月天婷婷| 久色| 久久丁香五月天| 久久99热网| 亚洲精品网址| 婷婷丁五月| 九九九九九九九热| 色色色网站| 久草热在线视频| 婷婷丁香激情五月天色色色| 色婷成人狠干| 99久久精彩视频。| 99小视频网站| 日本久久高清| 97caop| 狠狠情色| 欧美成人热| 五月天色丁香| 色999五月色| 一片AV片免费播放| 激情综合久久| 五月天欧美激情| 五月天婷婷网站888| 中文字幕按摩做爰| 日韩在线成人电影| 最新午夜理论片| 久久久久久久合一狠狠做深爱| 色五月综合在线| 岛国在线观看91| 青青草原亚洲天堂| 五月天婷婷黄色| 99热国产| 九月性爱网| 99在线观看视频免费| 狠狠色噜噜狠狠| 色爱综合网| www91久久| 激情婷婷狠狠干| 色情丁香五月婷婷精品| 五月四色激情| 亚洲国产婷婷色五月| 91人人爽久久涩噜噜噜| www.超碰在线| 丁香 亚洲 久久| 深爱五月天 开心网| 丁香婷婷五月六月久久| 久久曰9| 婷婷丁香色五月天久久88| www.狠狠| 亚洲日比视频| 久久五月天激情婷婷| 黄色一级影片| 婷婷五月另类网站| 久久精品在线| 丁香激情网| 涩 五月 婷婷 狠狠| 色五月丁香婷婷综合| 猫咪伊人久久| 亚洲一区二区 成人网站戴套| 五月丁香六月婷婷,婷| 色香久久| 五月天堂六月丁香亚州中文字幕久久 | 五月丁香六月色| 国产精品91抖高| 久久婷婷六月| 成人午夜无码视频| 亚洲AV无码影院| 成人精品99| 五月开心播播网| wwwss在线观看| www.色综合.com| 《丁香激情综合久久伊人久久》影视在线观看 -高清预告手机免费播放 -三妹影院 | .青娱乐天天操B| 丁香五月成人论坛| 一本色道久久综合狠狠躁小说| 影视av久久久噜噜噜噜噜三级| 丁香五月六月婷婷殴美综合| 人人摸人人操人人爱| 五月丁香va| 久热这里| 久久综合激情五月天| 婷婷99狠狠| 99在线观看视频| 99九九玖玖| 色五月婷婷1| 夜夜撸日日操| 九九热在线视频观看免费10| 婷婷.com| 在线亚洲综合| 亚洲热久久| 大香蕉在线观看9| 久久婷婷激情视频| 大香蕉伊然在亚洲90| 99r这里只有精品在线观看| 亚韩精品视频1区| 五月草影视| 五月丁香婷婷老司机| 吉澤明步Av一區二區| 五月天久草| 日本色五月婷婷| 在线观看996精品| 激情伊人| www久久99com| 少妇熟女视频一区二区三区|