PB实现API接口访问和json数据构造与读取

PB实现API接口访问和json数据构造与读取

概述

PB作为一个古老的面向对象的编程语言,技术主要掌握在第一批程序员手里,现在基本没有这个语言的教学课程,知道这个的也不多。最近接触到以前的一个系统,是用PB写的,不得不说,写出来的软件还是蛮好用的,但做里面的接口扩展和维护工作,对于PB基础为0的我来说,还是很有难度的,下面介绍对于外部API接口的调用和参数的构造和读取。

环境

对政务网提供的java语言的API接口,通过PB进行调用:

  1. Powerbuilder 12.5;
  2. Windows 7;
  3. 对于较为复杂的函数实现,采用C语言DLL,外部函数调用实现;

代码

博客设置页面,直接上代码 代码片.

// PB编程
string postcontent//定义入参构造字符串
string out_response = space(100000)//定义出参构造字符串
n_pbfunc_json lnv_json //定义json,个人是通过sailjson json然后json = create sailjson来定义
ls_url = 'http://127.0.0.1:8080/web/api/xxx/test'//定义接口的完整路径
//入参参数值设置
string para1,para2,para3,para4,para5
para1 = '参数1'
para2 = '参数2'
para3 = '参数3'
para4 = '参数4'
para5 = '参数5'
//入参结构构造
postcontent = ''
postcontent = postcontent +'{'
postcontent = postcontent +    '"para1":"' + para1 + '",'
postcontent = postcontent +    '"para2":"' + para2 + '",'
postcontent = postcontent +    '"para3":"' + para3 + '",'
postcontent = postcontent +    '"para4":"' + para4 + '",'
postcontent = postcontent +    '"para5":"' + para5 + '"'
postcontent = postcontent + '}'
//请求设置
OleObject lole_tenyear   //声明ole,作为请求工具
lole_tenyear = CREATE oleobject
lole_tenyear.ConnectToNewObject("Microsoft.XMLHttp") //帮顶XMLhttp组件,我测过xp和win7都自带,不需安装任何辅助软件如.net环境
lole_tenyear.open ("POST",ls_url, false)   //POST和GET请求可在此处设置
lole_tenyear.setRequestHeader("Content-type","application/json")	//请求头设置,多个以相同方式添加即可
//执行请求
lole_tenyear.send(postContent) //执行API请求,
out_response = lole_tenyear.responseText   //获取返回结果ls_response
//判断结果/执行是否异常
IF lole_tenyear.Status >= 300 THEN
	messagebox('',"HTTP request failed: "+out_response)
END IF
//回参json解析
lnv_json.of_parse(out_response) //此处参考网上代码,个人是通过json.parse(out_response)来实现
//定义某个回参参数名
string outMsg_1
//回参值的获取
lnv_json.getattribute("outMsg_1",outMsg_1)//获取参数名为outMsg_1的值
//outMsg_1 = lnv_json.getattribute('outMsg_1') 
//回参值的改造(修改)
string upMsg_1 = '更改的值'
lnv_json.setattribute('outMsg_1',upMsg_1)//更改参数名为outMsg_1的值为upMsg_1 

//设置json数据窗口展开项,此处控件设为tv
//树立菜单
tv.deleteitem(0) //清空数据
handle = tv.insertitemfirst(0, 'root', 2)	//表项父句柄(0根),表项标签字符串,插入位置图标序号,返回插入表项句柄
lnv_json.buildtree( tv, handle, 2,3,1)	//递归构建树
tv.expanditem( handle)	//展开表项

destroy lnv_json //可不加

说明

添加外部dll函数,这里针对C语言的dll做简要说明:

//dll文件名:base64Util.dll,文件放在pbl程序同目录下
//dll函数定义:
DLLIMPORT unsigned char* __stdcall Base64Str(unsigned char *base);
//PB获取外部函数:
Function string Base64Str(string base) library "base64Util.dll" alias for "Base64Str;Ansi"
/*注意:注意dll的版本和PB开发程序及环境的版本,需要相同为32位或者64位!!!*/
  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值