PowerBuilder 12.5 使用OLE调用HTTP API:POST JSON与FORM-DATA

4星 · 超过85%的资源 需积分: 50 105 下载量 97 浏览量 更新于2024-09-03 2 收藏 2KB TXT 举报
"本资源主要介绍了如何在PowerBuilder 12.5中利用OLE对象MSXML2.ServerXMLHTTP进行HTTP API接口的调用,特别是POST方式提交JSON和FORM-DATA格式的数据。内容包括设置超时时间、构建请求参数、设置请求头以及处理可能的异常情况。" 在PowerBuilder 12.5开发环境中,对接WEB API通常需要借助外部对象来实现HTTP请求。在这个例子中,开发者使用了MSXML2.ServerXMLHTTP组件,这是一个基于COM的HTTP客户端接口,可以方便地执行HTTP请求,如POST和GET。首先,我们需要在程序的适当位置(如Open事件)创建并初始化这个OLE对象。 ```pb // 创建OLE对象 iole_http = CreateOleObject("MSXML2.ServerXMLHTTP") // 连接对象 iole_http.ConnectToNewObject("MSXML2.ServerXMLHTTP") ``` 在进行HTTP请求前,为了防止网络延迟或服务器响应慢导致的超时问题,我们可以设置超时值。以下代码设置了四个不同的超时时间:解析响应时间、连接响应时间、发送请求数据响应时间和接收数据响应时间。 ```pb // 设置超时时间 iole_http.SetTimeouts(10000, 10000, 10000, 60000) ``` 接下来,定义你要POST的数据。这里以JSON和FORM-DATA两种格式为例。JSON数据是一个字符串,例如: ```pb // JSON格式数据 String ls_args = '{"AAAA":"","BBBB":"","CCCC":"","DDDD":"","pageSize":10,"totalCount":0}' ``` 而FORM-DATA格式的数据需要按照URL编码规则处理,例如: ```pb // FORM-DATA格式数据 String ls_args = 'AAAA=man+1&BBBB=555' ``` 在发送请求之前,我们需设置请求方法(POST或GET),并指定请求头。对于JSON数据,设置"Content-Type"为"application/json;charset=UTF-8";而对于FORM-DATA,应设置为"application/x-www-form-urlencoded;charset=UTF-8"。 ```pb // 对于JSON数据 iole_http.Open("POST", ls_url, false) iole_http.setRequestHeader("Content-Type", "application/json;charset=UTF-8") // 对于FORM-DATA数据 // iole_http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8") ``` 接着,计算POST数据的长度,并将字符串转换为Blob类型,以便发送。 ```pb Long ll_length Blob lblb_args ls_args = Blob(ls_args, EncodingUTF8!) ll_length = Len(ls_args) ``` 最后,发送请求并捕获可能出现的运行时错误。 ```pb try iole_http.setRequestHeader("Content-Length", String(ll_length)) iole_http.Send(lblb_args) catch (runtime_error e) // 处理异常 end try ``` 通过这种方式,PowerBuilder应用可以与HTTP API进行有效交互,无论是发送JSON还是FORM-DATA格式的数据。这种技术在现代Web服务集成中非常常见,特别是在需要与RESTful API进行数据交换的场景下。