對不起,如果我的問題很明顯。我沒有Rest Server的經驗。我在google和stackoverflow上做了很長時間的搜索,但是我沒有找到對我的案例的迴應。 我已經使用Delphi嚮導在XE7中使用默認設置創建了DataSnap Rest Server。 除了通過嚮導創建ReverseString和EchoString默認的方法,我創建了一個新的方法:使用Indy訪問Datasnap Rest Server方法
//Server Method
function TSrvServerMetodos.SenMsgToUsers(Plataform: integer;
Users: TJSONArray; Title, Msg: String): String;
begin
//staff code
end;
我的DataSnap其餘服務器在本地主機上運行:8080。
在客戶端,我想訪問這個方法使用代碼與印:
procedure TfrmUntClientRest.Button4Click(Sender: TObject);
const //TsrvServerMetodos/
sendUrl = 'http://localhost:8080/datasnap/rest/TsrvServerMetodos/SendPushToUsers';
var
Params: TStringList;
idHTTP: TIDHTTP;
SSLIOHandler: TIdSSLIOHandlerSocketOpenSSL;
AuthHeader,r: string;
begin
idHTTP := TIDHTTP.Create(nil);
try
SslIOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
idHTTP.IOHandler := SSLIOHandler;
Params := TStringList.Create;
idHTTP.Request.Host := sendUrl;
Params.Values['Plataform']:='1';
Params.Values['Users=']:='["Luiz"]';
Params.Values['Title']:='Tit';
Params.Values['Msg']:='Msg';
IdHTTP.Request.ContentType := 'application/x-www-form-urlencoded;charset=UTF-8';
r:=IdHTTP.Post(sendUrl, Params);
Memo1.Lines.Add('Send result: ' + r);
finally
FreeAndNil(idHTTP);
Params.Free;
end;
end;
當我在按鈕點擊運行上面的代碼,我得到了一個錯誤: 「第一次機會異常的。$ 747F1CDA Exception類TDBXError與消息 '服務器方法列表中沒有找到TsrvServerMetodos.updateSendPushToUsers法' 過程DataSnapServer.exe(6236)」
我的問題是:
我的程序是SendPushToUsers,但Rest Server正在映射到updateSendPushToUsers。有人可以幫我解決嗎?
有沒有辦法讓url的快捷方式爲http://localhost:8080/SendPushToUsers而不是http://localhost:8080/datasnap/rest/TsrvServerMetodos/SendPushToUsers?
謝謝你是進步,路易斯
對不起,但我沒有在WebServer中運行服務器應用程序。這是一個桌面獨立應用程序。 –
我在這裏找到了對第一個問題的回覆:http://docwiki.appmethod.com/appmethod/1.13/topics/en/DataSnap_REST_Messaging_Protocol。有人可以幫助解決第二個問題嗎?問候,路易斯 –