如何从PowerBuilder中的服务器捕获响应

时间:2017-04-05 15:02:30

标签: 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功能的详细信息在以下链接中: http://infocenter-archive.sybase.com/help/index.jsp?topic=/com.sybase.dc37781_1150/html/psref/CCJCIIFD.htm

请考虑服务器返回 404 代码,其中包含以下消息:找不到文件!

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

  • 1成功

  • -1一般错误

  • -2无效网址

  • -4无法连接到互联网

  • -5尝试了不支持的安全(HTTPS)连接

  • -6互联网请求失败

2 个答案:

答案 0 :(得分:1)

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

参考上述代码:

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 data 中捕获。 我们需要将数据转换为String,如下所示:

is_data = String(data, EncodingANSI!) 

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

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

  • 点击文件>新
  • 选择PBObject选项卡
  • 选择标准类,然后单击确定
  • 选择Standard Class Type作为internetresult并单击OK。

答案 1 :(得分:0)

你是对的!

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

因此,您需要从InternetResult类创建一个后代,并实现InternetData函数以根据需要处理接收到的数据块。