gpt4 book ai didi

java - 使用 Indy 和 Delphi 发送一个 JSON 编码的对象

转载 作者:可可西里 更新时间:2023-11-01 16:08:05 26 4
gpt4 key购买 nike

<分区>

我已经在这个问题上工作了太多个小时,但没有取得任何进展。我有一个有效的旧解决方案,但我正在尝试将其移植到 Indy 以使代码更可靠且更易于维护。

我们有一个 servlet,它处理使用 HTTP POST 消息发送给它的请求。消息有一个参数“command”,它的值决定了 servlet 应该做什么。

目前我有这个:

procedure TIndyLoginServer.SendRequest(Command, Json: string; Request: TRequest);
var
Params: TIdStrings;
ServerResponse: string;
begin
// Build parameters
Params := TStringList.Create();
Params.Add('command=' + Command);

try
// Content type should really be 'application/json' but then the parameters stop working
FIndyHttp.Request.ContentType := 'application/x-www-form-urlencoded';
ServerResponse := FIndyHttp.Post(FUrl, Params);
Request.OnRequestFinished(ServerResponse, '', '');
except
on E: EIdHTTPProtocolException do
begin
Request.OnRequestFinished('', E.Message, '');
end;
on E: EIdSocketError do
begin
if E.LastError = Id_WSAETIMEDOUT then
Request.OnRequestTimedOut();
end;
on E: EIdException do
begin
Request.OnRequestFinished('', E.Message, '');
end;
end;
end;

这种方法有效,命令到达 servlet 并按预期开始工作。问题是,除了参数之外,我还需要能够将 JSON 编码的对象与 POST 请求一起发送。 Java servlet 使用以下代码行接收 JSON 编码的对象

final BufferedReader r = req.getReader();

“req”显然是传入的 POST 请求,缓冲的读取器稍后用于解码对象。但是,我终究无法弄清楚如何以 servlet 可以读取数据的方式将 JSON 字符串附加到 TidHTTP 实例。

有没有人有任何建议或示例可供我引用?我所发现的只是如何发送文件。也许这就是我要找的?

以及如何在不破坏参数列表的情况下将请求的内容类型设置为“application/json”?如果我更改它,POST 请求仍会到达服务器,但不再找到“命令”参数。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com