关于PB调用HTTP接口的问题

fcydj1984 2014-07-12 08:01:05
小弟大学学的是经济学,毕业后才自学的编程,因为工作需要,但是没人教,很多东西都靠自己摸索和潜水看大家的讨论,这是小弟第一次发帖。

之前写过webservice的,但是没写过HTTP的,对方工程师一定要用这种接口方式,我也很无奈(对方是政府部门的开发商)。

我找了一些资料来看。


NEW一个STANDARD CLASS,选择INET,保存成n_inet

NEW一个STANDARD CLASS,选择INTERNETRESULT,在INTERNETDATA函数中写上 messagebox('返回结果',string(data)),保存成n_ir

下面就试下,如下脚本

n_inet ln_inet

n_ir ln_ir

ln_inet = create n_inet

ln_ir = create n_ir

integer li_ret

li_ret = n_inet.geturl('http://www.china-puer.cn/list.asp?id=1450',ln_ir)

if li_ret <1 then messagebox('发生错误',string(li_ret))

————————————我按照上述例子测试了一下,但是提示

null object reference at “ li_ret = n_inet.geturl('http://www.china-puer.cn/list.asp?id=1450',ln_ir)

不知道是哪里的问题?

有哪位大侠可以给指出问题所在?

有哪位大侠可能给小弟一个实例,我研究学习一下?

有哪位大侠可以根据下面的接口规范给小弟写一个简单的示例,小弟学习一下。

万分感谢


==============================================================================================

4 接口说明
接口通讯协议采用http协议;
接口采用post方式调用,入参:?k1=v1&k2=v2;
接口采用一个地址、用ACTION区分方法的形式;
接口序列化协议采用json协议;
响应码:200成功,非200失败;
在调用接口前先进行认证,认证后会返回ACCESS_TOKEN,该值有效时间为30天;
登陆后session有效时间2个小时。
必传头信息:
属性名称 中文名称 数据类型 数据长度 允许为空 备注说明
ACCESS_TOKEN 认证凭证 字符型 36 N
ACTION 行为 字符型 3 N 接口编号
SESSION_ID 登陆凭证 字符型 32 N
请求参数说明:
属性名称 中文名称 数据类型 数据长度 允许为空 备注说明
PAGE_NO 当前页码 字符型 Y 0代表第一页,默认是0
PAGE_SIZE 条数 字符型 Y 默认是10,且不能为0
返回通用参数说明:
属性名称 中文名称 数据类型 数据长度 允许为空 备注说明
PAGE 列表集合名称 字符型
COUNT 总条目数 字符型
PAGE_NO 当前页数 字符型
PAGE_SIZE 每页显示条目数 字符型
TOTAL_PAGE 总页数 字符型
5 接口概述
5.1 接口清单
ACTION编号 对应方法
S01 登录
S02 认证
S03 退出
B01 新增科室
B02 修改科室
B03 查询科室
B04 获取科室
B05 作废科室
B06 新增商品
B07 修改商品
B08 查询商品
B09 获取商品
B10 作废商品
I01 新增入库单
I02 删除入库单
I03 查询入库单
I04 批量入库
O01 查询剩余号源
O02 查询出库单
O03 新增出库单
O04 删除出库单
O05 批量出库
D01 查询订单
D02 就诊反馈
D03 批量反馈
备注:ACTION编号规则共3位,例如S01,第一位是模块编码,后两位是方法编码;S代表安全,B代表号源,I代表入库,O代表出库,D代表订单。
5.2 错误代码说明
错误格式:{“CODE”:”400001”,”MSG”:”缺少参数”}
序号 错误码 错误信息 详细描述
1 400001 请求体缺少{}参数
2 400002 请求头缺少{}参数
3 400003 请求的{}不存在
备注:错误信息中的”{}”显示错误的具体信息。
6 接口详述
6.1 安全模块
6.1.1 认证
6.1.1.1 请求参数表
属性名称 中文名称 数据类型 数据长度 允许为空 备注说明
APPID 应用ID 字符型 36 N
APPSECRET 密码(MD5加密) 字符型 36 N
6.1.1.2 返回参数表
属性名称 中文名称 数据类型 数据长度 允许为空 备注说明
ACCESS_TOKEN 应用凭证 字符型 36 N
6.1.1.3 返回json示例
{
"ACCESS_TOKEN":"e760727e-75f9-40a7-97d7-7547a13b2f3d"
}
6.1.2 登录
6.1.2.1 请求参数
属性名称 中文名称 数据类型 数据长度 允许为空 备注说明
SHOP_ID 医院ID 字符型 36 N
SHOP_PASSWD 医院密码 字符型 16 N
6.1.2.2 响应参数
属性名称 中文名称 数据类型 数据长度 允许为空 备注说明
SESSION_ID 用户凭证 字符型 32
6.1.2.3 响应示例
{
"SESSION_ID":" 3A6FBC6AAE7AAFA9D82C10A1FF8FD089"
}
6.1.3 退出
入参、出参都为空,但是头信息中必须传入SESSION_ID。
===========================================================================================


...全文
7432 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
fcydj1984 2014-08-03
  • 打赏
  • 举报
回复
谢谢楼上各位,问题已经解决了,系统基本开发完毕了。
WorldMobile 2014-07-17
  • 打赏
  • 举报
回复 1
给你一段代码,参考

string ls_url, ls_args, ls_header, ls_page_sql
blob lblb_args
long ll_length
int li_rc
string ls_result, ls_temp

ls_url = 'http://www.china-puer.cn/list.asp?'
ls_args = "id=1450"
lblb_args = Blob(ls_args, EncodingUtf8!)
ll_length = Len(lblb_args)
ls_header = "Content-Type: application/x-www-form-urlencoded;charset=utf-8~n" + &
"Content-Length: " + String( ll_length ) + "~n~n"
li_rc = iinet_base.PostURL(ls_url, lblb_args, ls_header, ii_httpPort, iir_msgbox)
if li_rc = 1 then
lb_data = iir_msgbox.ib_data
end if
horizonlyhw 2014-07-16
  • 打赏
  • 举报
回复
参考http://limindo.blog.163.com/blog/static/2647585620142269576794/ 改造如下字符串: ls_headers = "Content-Type: application/x-www-form-urlencoded~n" + & "Content-Length: " + String(ll_length) + "~n~n" 每个头key和value之间用冒号分隔,每对头之间空格分隔,头信息之后两个换行
fcydj1984 2014-07-16
  • 打赏
  • 举报
回复
引用 4 楼 horizonlyhw 的回复:
参考http://limindo.blog.163.com/blog/static/2647585620142269576794/ 改造如下字符串: ls_headers = "Content-Type: application/x-www-form-urlencoded~n" + & "Content-Length: " + String(ll_length) + "~n~n" 每个头key和value之间用冒号分隔,每对头之间空格分隔,头信息之后两个换行
前天后来是参照的你发的这个帖子的例子,网上转帖很多,但是很多都没经过验证的,害的我一个一个验证。
lao_bulls 2014-07-14
  • 打赏
  • 举报
回复
楼主,用pb11.5测试,返回的结果是乱码,为什么?
fcydj1984 2014-07-14
  • 打赏
  • 举报
回复
谢谢,我知道了,百度上转载的都没经过验证的,我也没仔细看。
zhanghl 2014-07-12
  • 打赏
  • 举报
回复
li_ret = n_inet.geturl('http://www.china-puer.cn/list.asp?id=1450',ln_ir) 这一行的n_inet没有实例化呀,应该是 ln_inet 吧

662

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder Web 应用
社区管理员
  • Web 应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧