Post données JSON à RESTful serveur datasnap de delphes client
J'ai besoin d'envoyer un simple objet JSON pour un séjour Reposant serveur datasnap (Delphi) à partir d'un client Delphi. Je suis à l'aide de Delphi XE. Quelqu'un peut-il m'aider avec le code? Je suis en train d'essayer pendant des heures, mais ne pas l'obtenir. s'il vous Plaît demander si les détails ne sont pas suffisantes
Edit:
Ici est côté serveur déclaration de méthode:
procedure updatemethodnme(str:string):string;
et ici, c'est côté client code:
function PostData(request: string): boolean;
var
param: TStringList;
url, Text,str: string;
code: Integer;
http: TIDHttp;
begin
Result:= false;
http:= TIDHttp.Create(nil);
http.HandleRedirects:= true;
http.ReadTimeout:= 50000;
http.request.Connection:= 'keep-alive';
str:= '{"lamp":"'+lamp+'","floor":"'+floor+'","op":"'+request+'"}';
param:= TStringList.Create;
param.Clear;
param.Add(str);
url:= 'h***p://xx2.168.xx.xx:xxxx/Datasnap/rest/TserverMethods1/methdname/';
try
Text:= http.Post(url, param);
Result:= true;
except on E: Exception do
begin
Result := false;
end;
end;
end;
Veuillez prendre un moment pour vous expliquer un peu plus en détail quels sont les problèmes que vous avez été confrontés. Avez-vous du code d'essai, vous pouvez poster afin que nous puissions voir ce que vous avez essayé?
Alors, où voulez-vous obtenez une erreur? Pouvez-vous vérifier sur le serveur que vous recevez réellement quelque chose? En regardant le code, je dirais que c'est comme si il doit travailler.
Le serveur ne reçoit pas de quoi que ce soit. côté client, il est parfois montrant erreur interne du serveur d'exception, n quelque temps, pas d'erreur mais rien ne se passe.
Vous validez les données à l'aide d'un
Alors, où voulez-vous obtenez une erreur? Pouvez-vous vérifier sur le serveur que vous recevez réellement quelque chose? En regardant le code, je dirais que c'est comme si il doit travailler.
Le serveur ne reçoit pas de quoi que ce soit. côté client, il est parfois montrant erreur interne du serveur d'exception, n quelque temps, pas d'erreur mais rien ne se passe.
Vous validez les données à l'aide d'un
TStringList
mais vous avez besoin de l'afficher à l'aide d'un TStream
à la place. L'affichage d'une TStringList
crée un genre très différent de la requête HTTP plutôt que de poster un TStream
, qui affecte la façon dont le serveur interprète et analyse de la demande.OriginalL'auteur Prince Agrawal | 2013-07-27
Vous devez vous connecter pour publier un commentaire.
Voici quelques simples XE2 code de test de l'envoi de données JSON via HTTP Post à l'aide de SuperObject (à l'aide d'Indy
TIdHTTP
):Ce sont les données qui va sortir:
Récepteur est un
TWebAction
sur unTWebModule
, avec handler:Il utilise
TIdHTTPWebBrokerBridge
:C'est la réponse réelle:
OriginalL'auteur Jan Doggen
Vous pouvez utiliser Indy
TIdHTTP
composantPost()
JSON données codées à un REPOS serveur. Il vous suffit d'encoder et de décoder les données JSON dans votre propre code.Je pensais que c'était très clair dans sa première phrase: "j'ai besoin d'envoyer un simple objet JSON pour un séjour Reposant serveur datasnap (Delphi), à partir de Delphi client".
Je comprends que le côté serveur qui est utilisé, et il y a aussi un côté client ainsi, tous deux écrits en Delphi. Je ne sais pas si les difficultés sont liées pour le Client, le Serveur, ou les Deux.
Vous plaisantez? C'est clair qu'il est en train d'essayer d'écrire un client qui a besoin de poster sur un serveur.
vous validez les données JSON à l'aide d'un
TStringList
, ce qui est faux. Vous devez utiliser unTStream
au lieu de cela, comme je l'ai mentionné plus tôt. L'affichage d'uneTStringList
crée un genre très différent de l'adresse HTTP du corps de la requête plutôt que de poster unTStream
.OriginalL'auteur Remy Lebeau
De Delphi6 d'une affectation à un serveur datasnap construit en XE5 ci-dessus fonctionne pour moi, mais j'ai trouvé la méthode de serveur nécessaires le paramètre d'être défini comme un TJSONObject au lieu de TStream. Quelque chose de bizarre en plus de cela, le Datansap serveur modifications de la méthode de recherche lorsque vous effectuez un post au lieu de get. J'ai eu par exemple une méthode nommée ImportData. Mais lorsque vous déboguez le serveur, il a été la recherche d'un UpdateImportData méthode. Alors, quand j'ai ajouté de la nouvelle méthode et changé le paramètre de type de Données.DBXJSON.TJSONObject il a travaillé.
OriginalL'auteur Frank Pedro