3165 次
2 に答える
1
400 は「不正なリクエスト」を意味します。サーバーが処理できないデータを送信しています。TIdHTTP.Post(TStream)
の代わりに を使用して JSON データを送信してみてくださいTIdHTTP.Post(TStrings)
。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;
于 2011-07-06T07:16:18.567 に答える
0
ドキュメントには
通信時には基本アクセス認証を使用する必要があります。セキュリティのため、デフォルトでは、サーバーは同じマシン上の他のプロセスからの接続のみを受け入れます。
したがって、コードでは、Indyリクエストオブジェクトのユーザー名、パスワード、およびBasicAuthenticationプロパティを設定する必要があります。
(認証が欠落していると、通常、400ではなくHTTP 401(未承認)が発生します。)
于 2011-07-06T04:50:02.580 に答える