pbfunc外部函数扩展应用-在Powerbuilder中进行Http的GET、POST操作

利用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://,调用代码如下:

 1 n_pbfunc_http lnv_http
 2 lnv_http.of_clear()//清空参数
 3
 4 n_pbfunc_encode lnv_encode
 5 lnv_http.of_set_URL("http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx/getCountryCityByIp?theIpAddress=136.213.185.177")
 6
 7 Blob lblb_data
 8 string ls_error
 9 IF lnv_http.of_Get(lblb_data,ls_error) Then
10     string gbkData
11     gbkData = lnv_encode.of_utf8ToGbk(lblb_data)//由于返回来的是utf-8编码,直接显示中文会乱码
12     MessageBox("Http Get返回",gbkData)
13 Else
14     MessageBox("提示","执行失败")
15 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的参数值,调用代码如下:

 1 n_pbfunc_http lnv_http
 2 lnv_http.of_clear()//清空参数
 3 lnv_http.of_set_URL("http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx/getCountryCityByIp")
 4 lnv_http.of_set_ContentType("application/x-www-form-urlencoded")
 5
 6 n_pbfunc_encode lnv_encode
 7 blob utf8
 8 utf8= lnv_encode.of_str2utf8("136.213.185.177")
 9 lnv_http.of_add_form("theIpAddress",utf8)
10
11 Blob lblb_data
12 string ls_error
13 IF lnv_http.of_post(lblb_data,ls_error) Then
14
15     string gbkData
16     gbkData = lnv_encode.of_utf8ToGbk(lblb_data)//由于返回来的是utf-8编码,直接显示中文会乱码
17     MessageBox("提示",gbkData)
18 Else
19     MessageBox("提示","执行失败")
20 End IF

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

时间: 2024-10-04 03:05:48

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

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

利用pbfunc外部函数在Datawindow中直接生成QR二维码,非图片方式.需要注意以下面几点: 1 Datawindow的DataObject的单位必须为像素(Pixels). 2 Datawindow的DataObject中放一个Text控件作为要显示QR二维码的位置和大小,长宽要相同 下面代码演示在Datawindow中直接显示QR二维码的操作: 在Datawindow中显示一行QR码: 1 string ls_Data 2 ls_Data = mle_1.Text//QR码内容 3

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

DW设计界面中快速整体布局页面的操作流程: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta htt

外部函数

在多文件程序中,如果希望函数的作用域只限于所在源程序文件,即该函数只能被所在源程序文件的其他函数调用,则称为内部函数,在定义内部函数时函数首部须加上关键字static: 如果希望将函数的作用域扩展到其他源程序文件,则称为外部函数,在引用该外部函数的源程序文件中用关键字extern声明外部函数. 在定义外部函数时,在函数首部前面加上关键字extern,缺省extern则默认为外部函数. 在需要调用外部函数的源程序文件中,用关键字extern声明该外部函数. 例子:利用外部函数求两个整数中较大值与较

c/c++ c中内部函数和外部函数

函数本质上是全局的,因为一个函数要被另外的函数调用,也可以指定函数不能被其他文件调用.根据能否被其他源文件调用,将函数区分为内部和外部函数. 内部函数:(也称静态函数) 只能被本文件中其他函数所调用.定义内部函数格式如下: static 类型标识符 函数名(形参表) 如:static int fun(int x,int y) 使用内部函数,可以使函数的作用域只局限于所在的文件,在不同文件中有同名的内部函数,互不干扰.这样不同的人可以分别编写不同的函数,而不必担心所用函数是否会与其它文件中的函数同

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

一般我们想要在 ejs 模板中使用外部函数用于特殊的处理,比如:<%= ellipsis(title, 30) %> 通常的做法是: 使用 app.locals 来定义: app.locals.ellipsis = function(str, len) { return str; } // 使用 <%= ellipsis(title, 20) %> 使用 ejs.filters 来定义,详细用法: var ejs = require('ejs'); ejs.filters.elli

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

由于最近辞职在家,自己的时间相对多一点.所以就根据prototytpeJS的API,结合自己正在看的司徒大神的<javascript框架设计>,整理了下Js中常用一些字符串,数组,函数扩展,一来可以练练手,二来也锻炼下自己的代码能力.由于代码里面的注释自认为已经非常详细,所以就直接贴代码了. 1. 字符串扩展: ;(function() { var method, stringExtends = { /** * 删除字符串开始和结尾的空白 * @returns {string} */ stri

在artTemplate的标签中使用外部函数的方法

第一步,声明函数,并将函数作为data对象的属性.例如: var resArray = new Array(); function beforeRender(data) { //addToArray为想在template的标签中执行的函数 var addToArray = function(id, rec){ resArray[id] = rec; }; data.addToArray = addToArray; } function submit(){ $.ajax({ type : "POS

IE 扩展调用主窗口中的函数

在函数名前加上 parentWindow 即可.如: <script> var doc = external.menuArguments.document doc.parentWindow.函数名(); </script>IE 扩展调用主窗口中的函数

PowerBuilder中使用JDBC连接MYSQL 无法使用COUNT(*) MAX() 函数的处理

PowerBuilder中使用JDBC连接MYSQL 遇到的错误: long ll_count // Profile mysql SQLCA.DBMS = "JDBC" SQLCA.LogPass = "123" SQLCA.LogId = "root" SQLCA.AutoCommit = False SQLCA.DBParm = "Driver='com.mysql.jdbc.Driver',URL='jdbc:mysql://lo