- procedure TForm5.Button4Click(Sender: TObject);
- var
- O, item: ISuperObject;
- Strm: TStringStream;
- result: string;
- ctx: TSuperRttiContext;
- student: TStudent;
- begin
-
-
-
-
-
- O := SO(
- ‘{"jsonrpc": "2.0", "method": "fuck", "params":["hehe",32,4],"id":"12"}‘);
- Strm := TStringStream.Create(O.AsString);
- try
- IdHTTP1.Request.ContentType := ‘application/json‘;
- result := IdHTTP1.Post(‘http://10.0.0.107/json_server/server.php‘, Strm);
- Memo1.Lines.Add(result);
- O := SO(result);
- Memo1.Lines.Add(O.AsObject.S[‘result‘]);
-
- O := SO(
- ‘{"jsonrpc":"2.0","method":"getstudent","params":[{"id":1,"name":"name","age":123}],"id":"1433813750240"}‘);
- Strm := TStringStream.Create(O.AsString);
- result := IdHTTP1.Post(‘http://10.0.0.107/json_server/server.php‘, Strm);
- Memo1.Lines.Add(result);
- O := SO(result);
- result := O.AsObject.S[‘result‘];
- Memo1.Lines.Add(result);
-
- ctx := TSuperRttiContext.Create;
- try
-
- student := ctx.AsType<TStudent>(SO(result));
- ShowMessage(student.name);
-
- O := ctx.AsJson<TStudent>(student);
- ShowMessage(O.AsString);
- finally
-
- end;
-
- O := SO(
- ‘{"jsonrpc":"2.0","method":"getstudents","params":["xxx"],"id":"1433814568751"}‘);
- Strm := TStringStream.Create(O.AsString);
- result := IdHTTP1.Post(‘http://10.0.0.107/json_server/server.php‘, Strm);
- Memo1.Lines.Add(result);
- O := SO(result);
- Memo1.Lines.Add(O.AsObject.S[‘result‘]);
-
- for item in O[‘result‘] do
- begin
-
- student := ctx.AsType<TStudent>(item);
- ShowMessage(student.name);
-
- end;
- finally
- Strm.Free;
- end;
- end;
http://blog.csdn.net/earbao/article/details/46423167
delphi 使用superobject实现jsonrpc的http远程调用 good
原文:http://www.cnblogs.com/findumars/p/5338791.html