利用PBFunc扩展函数进行Http的操作时,需要对n_pbfunc_http的以下几个函数进行参数设置:

of_set_URL(...)//要进行GET或POST的url,必须
of_set_ContentType(...)//设置Content-Type,可选
of_post(...)、of_get(...)//根据需要选择post操作还是get操作
如果需要utf-8编码转换的请用n_pbfunc_encode对象中的of_str2utf8函数

下面以http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx?op=getCountryCityByIp这个来获取IP所在地的webservice来讲解GET和POST操作

  • GET操作

在浏览器中输入http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx?op=getCountryCityByIp,页面加载完后,在页面的HTTP GET里面中看到:

GET /WebServices/IpAddressSearchWebService.asmx/getCountryCityByIp?theIpAddress=string HTTP/1.1
Host: www.webxml.com.cn

这就是我们需要调用的信息
我们只需要将Host附加到GET对应的/WebServices/....之前,并在最前面增加http://,调用代码如下:

 n_pbfunc_http lnv_http
lnv_http.of_clear()//清空参数 n_pbfunc_encode lnv_encode
lnv_http.of_set_URL("http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx/getCountryCityByIp?theIpAddress=136.213.185.177") Blob lblb_data
string ls_error
IF lnv_http.of_Get(lblb_data,ls_error) Then
string gbkData
gbkData = lnv_encode.of_utf8ToGbk(lblb_data)//由于返回来的是utf-8编码,直接显示中文会乱码
MessageBox("Http Get返回",gbkData)
Else
MessageBox("提示","执行失败")
End IF

调用成功后返回

<?xml version="1.0" encoding="utf-8"?>

<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://WebXml.com.cn/">

  <string>136.213.185.177</string>

  <string>美国  </string>

</ArrayOfString>
  • POST操作

同样道理,在页面的HTTP POST里面中看到:

POST /WebServices/IpAddressSearchWebService.asmx/getCountryCityByIp HTTP/1.1
Host: www.webxml.com.cn
Content-Type: application/x-www-form-urlencoded
Content-Length: length theIpAddress=string

Content-Length,这个参数忽略,将Host附加到POST对应的/WebServices/....之前,并在最前面增加http://,调用of_set_ContentType来设置Content-Type,of_add_form设置theIpAddress的参数值,调用代码如下:

 n_pbfunc_http lnv_http
lnv_http.of_clear()//清空参数
lnv_http.of_set_URL("http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx/getCountryCityByIp")
lnv_http.of_set_ContentType("application/x-www-form-urlencoded") n_pbfunc_encode lnv_encode
blob utf8
utf8= lnv_encode.of_str2utf8("136.213.185.177")
lnv_http.of_add_form("theIpAddress",utf8) Blob lblb_data
string ls_error
IF lnv_http.of_post(lblb_data,ls_error) Then string gbkData
gbkData = lnv_encode.of_utf8ToGbk(lblb_data)//由于返回来的是utf-8编码,直接显示中文会乱码
MessageBox("提示",gbkData)
Else
MessageBox("提示","执行失败")
End IF

调用成功后返回的结果与GET一样,也可以使用该页面上面是SOAP操作,有兴趣的可以自行试验(参考下载demo中w_http中ws_*按钮代码)
Post的demo代码,参考w_http窗体

pbfunc外部函数扩展应用-在Powerbuilder中进行Http的GET、POST操作的更多相关文章

  1. pbfunc外部函数扩展应用-直接在Datawindow中生成QR二维码,非图片方式

    利用pbfunc外部函数在Datawindow中直接生成QR二维码,非图片方式.需要注意以下面几点: Datawindow的DataObject的单位必须为像素(Pixels). Datawindow ...

  2. 表格布局扩展/DW设计界面中快速整体布局页面的操作

    DW设计界面中快速整体布局页面的操作流程: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &q ...

  3. 外部函数/external

    定义在moodle/lib/externallib.php 概观 外部函数API允许您创建可由外部程序(如Web服务API)访问的完全参数化的方法. 外部函数位于externallib.php文件中. ...

  4. 如何在 ejs 模板中使用 helper function 外部函数进行特殊处理?

    一般我们想要在 ejs 模板中使用外部函数用于特殊的处理,比如:<%= ellipsis(title, 30) %> 通常的做法是: 使用 app.locals 来定义: app.loca ...

  5. Js中常用的字符串,数组,函数扩展

    由于最近辞职在家,自己的时间相对多一点.所以就根据prototytpeJS的API,结合自己正在看的司徒大神的<javascript框架设计>,整理了下Js中常用一些字符串,数组,函数扩展 ...

  6. IE 扩展调用主窗体中的函数

    IE 扩展调用主窗体中的函数 在函数名前加上 parentWindow 就可以.如: <script>     var doc = external.menuArguments.docum ...

  7. ES6函数扩展

    前面的话 函数是所有编程语言的重要组成部分,在ES6出现前,JS的函数语法一直没有太大的变化,从而遗留了很多问题和的做法,导致实现一些基本的功能经常要编写很多代码.ES6大力度地更新了函数特性,在ES ...

  8. ES6学习之函数扩展

    函数默认参数 function test(x = 1, y = 2) { return x + y } test(5, 6) test() 若默认参数在必须参数之前,要想取得默认参数,只有当传入的值为 ...

  9. LoadRunner如何调用外部函数

    LoadRunner如何调用外部函数 使用 VuGen 时,可以调用在外部 DLL 中定义的函数.通过从脚本调用外部函数,可以降低脚本的内存使用量以及总体运行时间.要调用外部函数,需要加载定义了该函数 ...

随机推荐

  1. linux 笔试题

    一.填空题: 1. 在Linux系统中,以 文件 方式访问设备 . 2. Linux内核引导时,从文件 /etc/fstab 中读取要加载的文件系统. 3. Linux文件系统中每个文件用 i节点 来 ...

  2. Exists 比Contains 慢非常多。

    void Main() { List<string> s = new List<string>(){}; for(int i=0;i<10000;i++) { s.Add ...

  3. 在线PDF编辑网站http://www.pdfescape.com

    网站地址:http://www.pdfescape.com 先转载一个简单介绍的文章 如果你以前很少阅读PDF文档,电脑中也没有PDF阅读器:adobe reader,foxit reader之类的软 ...

  4. T-SQL 公用表表达式(CTE)

    公用表表达式(CTE) 在编写T-SQL代码时,往往需要临时存储某些结果集.前面我们已经广泛使用和介绍了两种临时存储结果集的方法:临时表和表变量.除此之外,还可以使用公用表表达式的方法.公用表表达式( ...

  5. C primer plus 练习题 第五章

    1. #include <stdio.h> #define MINU 60 int main() { int minute, hour, m; printf("请输入分钟:&qu ...

  6. C# FTP FtpWebRequest UsePassive 属性

    属性值 类型:System::Boolean如果客户端应用程序的数据传输过程侦听数据端口上的连接,则为 false:如果客户端应在数据端口上启动连接,则为 true. 默认值为 true. UsePa ...

  7. [PaPaPa][需求说明书][V0.3]

    PaPaPa软件需求说明书V0.3 前   言 不好意思,本文是没有前言的. 别说是前言了,其实关于界面的内容我也是不打算写!!   因为我知道你们想要的界面是这样的: 再不济也应该是这样的: 但是我 ...

  8. U3D中IOS平台泛型方法尽少使用

    U3D的IOS最小运行库use micro mscorlib是不包含泛型反射方法的,如FieldType.GetGenericArguments方法.所以尽量少用List而直接使用array. 另外请 ...

  9. BATCH(BAT批处理命令语法)

    bat语法备忘扩展名是bat(在nt/2000/xp/2003下也可以是cmd)的文件就是批处理文件[@more@] bat语法备忘扩展名是bat(在nt/2000/xp/2003下也可以是cmd)的 ...

  10. 网络安装archlinux(2012.8.20)笔记

    周末闲极无聊,把烂笔记本翻出来想装个Archlinux,发现USB不能启动,光驱也挂了,只好网络安装. 我先后试了两种安装方式,一种纯互联网启动,安装,一种局域网启动,再互联网安装.分别说说. 不管哪 ...