Rest Server如何取得從RESTREQUEST-POST/PUT的BODY資料 |
答題得分者是:GrandRURU
|
macchen
初階會員 發表:66 回覆:102 積分:33 註冊:2006-07-07 發送簡訊給我 |
請問一下,我有一個REST的SERVER,然後我想從RESTCLIENT中的POST/PUT指令送出JSON的資料到SERVER端,利用URL的方式,好像會出錯,所以才想從BODY送,但SERVER那端不知如何解析送過來的BODY資料,麻煩有經驗的人幫忙一下,謝謝。
REST CLIENT的程式碼如下,但SERVER那端要如何寫才可以接收到BODY的JSON資料: [code delphi] var jo:TJSONObject ; begin RESTRequest1.Method := TRESTRequestMethod.rmPOST ; RESTRequest1.Resource := 'boardinput/{itemid}'; RESTRequest1.AddParameter( { AName } 'itemid', { AValue } 'test', { AKind } TRESTRequestParameterKind.pkURLSEGMENT); jo := TJSONObject.Create ; jo.AddPair('string', 'aaa'); jo.AddPair('intvalue', '1234') ; RESTRequest1.AddBody(jo); RESTRequest1.Execute ; [/code]
------
DELPHI初學者 |
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
|
macchen
初階會員 發表:66 回覆:102 積分:33 註冊:2006-07-07 發送簡訊給我 |
你好,先謝謝你的回覆,這文章我之前有看過,但server那端範例是用php的語法去取得restclient傳過來的參數,如下:
nameStr : String; ... self.RESTRequest1.AddParameter('name', nameStr, [TRESTRequestParameterOption.poDoNotEncode]); end; 但是server那端卻是只有用php說明,如下,我還是找不到delphi的rest server可以從那邊取得從client端post json的資料放在body裡,然後server端可以顯示出來,不好意思,可以再指導一下小弟嗎?或是再麻煩跟我說明一下,謝謝。 最後,我把 PHP 程式碼也附上來給大家參考: <?php ===================引 用 GrandRURU 文 章=================== 請參閱:http://firemonkeylessons.blogspot.tw/2017/06/http-client-encode.html
------
DELPHI初學者 |
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
Server 端接受到 POST 請求,會主動尋找【update】開頭的 Method
以 EchoString 為例,Client 使用 POST 請求時,會去找【UpdateEchoString 】進行 POST 您可以另外建一個 Update 開頭的 Method 做和 GET 相同的函式。 至於您說的 BODY,我沒有寫過,暫時無法回答這個問題 ===================引 用 macchen 文 章=================== 你好,先謝謝你的回覆,這文章我之前有看過,但server那端範例是用php的語法去取得restclient傳過來的參數,如下: nameStr : String; ... self.RESTRequest1.AddParameter('name', nameStr, [TRESTRequestParameterOption.poDoNotEncode]); end; 但是server那端卻是只有用php說明,如下,我還是找不到delphi的rest server可以從那邊取得從client端post json的資料放在body裡,然後server端可以顯示出來,不好意思,可以再指導一下小弟嗎?或是再麻煩跟我說明一下,謝謝。 最後,我把 PHP 程式碼也附上來給大家參考: date_default_timezone_set("Asia/Taipei"); ===================引 用 GrandRURU 文 章=================== 請參閱:http://firemonkeylessons.blogspot.tw/2017/06/http-client-encode.html |
macchen
初階會員 發表:66 回覆:102 積分:33 註冊:2006-07-07 發送簡訊給我 |
謝謝,當client使用post時,如果會呼叫【UpdateEchoString 】,這個之前有查到了,只是因為http送出post/put時,可以用body帶資料,而別人使用post/put指令時,會需要帶json的資訊給我,所以才會想問如何可以當client送出post/put帶有body資訊時,server該如何抓取body的資訊,另外請問一下,有看過下面二個訊息嗎?謝謝。
第一個 Project RestServer.exe raised exception class TDBXError with message 'Cannot converter JSON value {"error":"no record."} input into TDBXTypes.WideString'. 第二個 message content is not a valid JSON 再麻煩指導我一下,謝謝您。 ===================引 用 GrandRURU 文 章=================== Server 端接受到 POST 請求,會主動尋找【update】開頭的 Method 以 EchoString 為例,Client 使用 POST 請求時,會去找【UpdateEchoString 】進行 POST 您可以另外建一個 Update 開頭的 Method 做和 GET 相同的函式。 至於您說的 BODY,我沒有寫過,暫時無法回答這個問題
------
DELPHI初學者 |
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
BODY 資料我只看到 RAD Server 可以應用
請參閱:http://blog.hjf.pe.kr/category/Delphi/C++Builder ===================引 用 macchen 文 章=================== 謝謝,當client使用post時,如果會呼叫【UpdateEchoString 】,這個之前有查到了,只是因為http送出post/put時,可以用body帶資料,而別人使用post/put指令時,會需要帶json的資訊給我,所以才會想問如何可以當client送出post/put帶有body資訊時,server該如何抓取body的資訊,另外請問一下,有看過下面二個訊息嗎?謝謝。 第一個 Project RestServer.exe raised exception class TDBXError with message 'Cannot converter JSON value {"error":"no record."} input into TDBXTypes.WideString'. 第二個 message content is not a valid JSON 再麻煩指導我一下,謝謝您。 ===================引 用 GrandRURU 文 章=================== Server 端接受到 POST 請求,會主動尋找【update】開頭的 Method 以 EchoString 為例,Client 使用 POST 請求時,會去找【UpdateEchoString 】進行 POST 您可以另外建一個 Update 開頭的 Method 做和 GET 相同的函式。 至於您說的 BODY,我沒有寫過,暫時無法回答這個問題 |
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
我回答錯了
如果要使用 BODY,應該是這樣寫
Body 裡要放 JSON,同時也要在 Method 加入 TJSONObject 我使用 RESTDebugger 測試成功,理論上使用上述的程式碼應該就可以成功 但我手上目前只有 XE,但 REST Debugger 可以成功,代表只是 RESTRequest 要設定好而已 您最後問的錯誤訊息大致上是說: JSON 解析失敗 要試的話可以用簡單一點的 JSON 寫法,像是: { "error":"Message content is not a valid JSON value." } (笑) 以上 ===================引 用 GrandRURU 文 章=================== BODY 資料我只看到 RAD Server 可以應用 請參閱:http://blog.hjf.pe.kr/category/Delphi/C++Builder ===================引 用 macchen 文 章=================== 謝謝,當client使用post時,如果會呼叫【UpdateEchoString 】,這個之前有查到了,只是因為http送出post/put時,可以用body帶資料,而別人使用post/put指令時,會需要帶json的資訊給我,所以才會想問如何可以當client送出post/put帶有body資訊時,server該如何抓取body的資訊,另外請問一下,有看過下面二個訊息嗎?謝謝。 第一個 Project RestServer.exe raised exception class TDBXError with message 'Cannot converter JSON value {"error":"no record."} input into TDBXTypes.WideString'. 第二個 message content is not a valid JSON 再麻煩指導我一下,謝謝您。 ===================引 用 GrandRURU 文 章=================== Server 端接受到 POST 請求,會主動尋找【update】開頭的 Method 以 EchoString 為例,Client 使用 POST 請求時,會去找【UpdateEchoString 】進行 POST 您可以另外建一個 Update 開頭的 Method 做和 GET 相同的函式。 至於您說的 BODY,我沒有寫過,暫時無法回答這個問題
編輯記錄
GrandRURU 重新編輯於 2017-06-23 22:15:34, 註解 無‧
|
macchen
初階會員 發表:66 回覆:102 積分:33 註冊:2006-07-07 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |