好吧,我难倒了下面的代码给我一个 http 400 错误,它告诉我提交的数据有问题,但我不知道是什么!:(
客户端设置为对 URL 进行编码(我已经尝试了 true/false);
procedure TForm2.Button1Click(Sender: TObject);
var
O:Isuperobject;
T:Tstringlist;
begin
T := Tstringlist.Create;
O := SO('{"jsonrpc": "1.0", "method": getinfo, "params": "[]" }');
t.Add(o.AsString) ;
idhttp1.Request.ContentType := '"application/json"';
memo1.lines.Add( idhttp1.post('http://127.0.0.1:8332/', T ) )
end;
end.
也许我很累谁知道,但这是开车撞墙了:\
关于 RPC 客户端的文档 https://en.bitcoin.it/wiki/API_reference_%28JSON-RPC%29
用途:
super 对象链接:http://www.progdigy.com/?page_id=6
最佳答案
400 表示“错误请求”。您正在发送服务器无法处理的数据。尝试使用 TIdHTTP.Post(TStream)
而不是 TIdHTTP.Post(TStrings)
来发送您的 JSON 数据。 TStrings 版本以一种可能会改变 JSON 数据的方式对字符串数据进行编码,因此它不再是有效的 JSON。该版本的 Post() 用于“application/x-www-form-urlencoded”请求。
试试这个:
procedure TForm2.Button1Click(Sender: TObject);
var
O: Isuperobject;
Strm: TStringStream;
begin
O := SO('{"jsonrpc": "1.0", "method": getinfo, "params": "[]" }');
Strm := TStringStream.Create(O.AsString);
try
IdHTTP1.Request.ContentType := 'application/json';
Memo1.Lines.Add(IdHTTP1.Post('http://127.0.0.1:8332/', Strm));
finally
Strm.Free;
end;
end;
关于delphi - 使用indy HTTP客户端和Superobject DELPHI http 400错误代码与rpc服务通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6590956/