Delphi 7 Indy Web服务器显示AResponseInfo.PostStream

3
我有一些客户发布XML / SOAP容器。我想构建一个微型独立的Indy Web服务器应用程序,接受任何请求并在备忘录字段中显示PostStream的内容。不幸的是,我不知道如何解码PostStream。使用此代码会导致异常:
ARequestInfo.PostStream.Seek(0, soFromBeginning);
Memo1.Lines.LoadFromStream(ARequestInfo.PostStream);

我正在使用Delphi7 Enterprise

1个回答

1
并非每种请求类型都使用PostStream属性,因此在尝试使用它之前,您必须检查PostStream是否不为nil
另外,TIdHTTPServer是一个多线程组件。其事件在工作线程中触发,从主线程以外访问UI组件是不安全的,因此在访问TMemo时需要与主线程同步。 更新: 如果您需要始终有一个可用的PostStream,在旧版本的Indy中,您可以使用OnCreatePostStream事件创建自己的TStream对象作为PostStream。在这些版本中,TIdHTTPServer管理它创建的PostStream对象,并且有时会在将它们提供给您之前释放它们,但是用户定义的PostStream对象直到请求被您处理完毕后才会被释放。然而,在最近的Indy 10版本中,有一个新的OnDoneWithPostStream事件,可以帮助控制何时释放任何给定请求的PostStream,无论是由TIdHTTPServer创建还是由您创建(在这种情况下,您不需要使用OnCreatePostStream事件来延长PostStream的生命周期)。在所有版本中,未释放的PostStream总是在TIdHTTPRequestInfo对象被释放时被释放。

我的目标只是显示所有传入请求和Memo字段中的所有内容。因此,如果有什么被发布了,我想看到它是什么。我只知道PostStream,还有什么其他的吗?非常感谢。 - user2942586
жңүж—¶еҖҷеҸ‘еёғзҡ„ж•°жҚ®иў«и§ЈжһҗеҲ°TIdHTTPRequestInfo.FormParamsе’ҢTIdHTTPRequestInfo.UnparsedParamsеұһжҖ§дёӯгҖӮ - Remy Lebeau

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接