如何在 PowerBuilder 中捕获来自服务器的响应

How to capture response from a server in PowerBuilder

假设我们有一个服务器,当用 URL 触发时(数据在 URL 中),服务器通过创建 PDF 文件进行响应。

在 PowerBuilder 工具中,我们通过 PostURL() 触发 URL:

int ll_return
inet_base = CREATE inet
ll_return = inet_base.postURL('http://server:8080/postRender?', Blob, header string, port#, internetData)

在 postURL 参数中,Blob 是附加到 URL 的数据。数据被转换为 blob,然后作为参数传递。

postURL 函数的详细信息如下 link: http://infocenter-archive.sybase.com/help/index.jsp?topic=/com.sybase.dc37781_1150/html/psref/CCJCIIFD.htm

考虑服务器 returns 404 代码,其中包含如下消息:未找到文件!

我需要帮助编写 PowerBuilder 代码来捕获服务器的响应。目前,由于我们使用 PostURL 函数来触发 POST 请求,在 return 中我只得到整数,例如:

深入研究这个问题后,我发现可以捕获来自服务器的响应消息。

参考以上代码:

int ll_return
inet_base = CREATE inet
ll_return = inet_base.postURL('http://server:8080/postRender?', Blob, header string, port#, internetData)

PostURL 函数的最后一个参数是一个名为 InternetData 的对象。 InternetData 是一个对象,它包含一个名为 internetdata(blob data) 的函数。

来自服务器的响应消息被捕获在变量blob 数据 中。 我们需要将数据转换成String,如下:

is_data = String(data, EncodingANSI!) 

变量 is_data 将包含 HTML 脚本,该脚本由来自服务器的响应消息组成。

创建 internetResult 类型用户对象的方法:

  • 单击“文件”>“新建”
  • Select PB对象选项卡
  • Select 标准 Class 并单击“确定”
  • Select 标准 Class 输入 internetresult 并单击确定。

你是对的!

传入postURL函数的对象基本上是一个回调对象。该对象的回调函数是 InternetData(blob Data)。

因此您需要从 InternetResult 创建一个后代 class 并实现 InternetData 函数以按照您认为合适的方式处理接收到的数据块。