PB使用HTTP协议、HTTPS协议
PB自身也有http组件,但使用起来较为繁琐。VDN作者将http功能通过API的形式封装为HttpClient组件,PB直接调用即可,支持http及https协议,客户端组件免费供PB开发者使用。也可通过VDN快速搭建自己的Http服务器。
一、导入组件
1.1、首先将Example\IE运行导入组件\导入组件\PB*\uo_vdncore.sru组件导入到PB项目中
将uo_vdncore组件拖到窗体,更名为uo_vdn
1.2、将DataClient\VesnDataCleint.dll拷贝到程序目录。
二、GET、POST请求
2.1 GET
//=====================================================
// 描述: 通过hc_get函数可以直接以Get方式向指定的URL发起请求
//=====================================================
string ls_html
if uo_vdn.hc_get("http://www.xxx.com/",ref ls_html)=1 then
mle_1.text=ls_html
else
messagebox("错误",uo_vdn.LastError)
end if
还可以设置设定接收服务器端返回的数据的格式Accept(Content-Type)
uo_vdn.accept= uo_vdn.ContentType_JSON //返回JSON格式:application/json
扩展示例通过GET方式从第三方平台获取快递信息
//=============================================
// 描述:演示通过第三方平台查询快递
//=============================================
String ls_rtn,ls_message
String ls_parm
//该ID为测试ID,如需正式使用请联系:http://q.kdpt.net/
ls_parm = '?id=***&com=auto&nu='+sle_no.Text +'&show=json&order=desc'
//返回格式
uo_vdn.accept = uo_vdn.ContentType_JSON //返回JSON格式:application/json
//获取
If uo_vdn.hc_get("http://q.kdpt.net/api" + ls_parm,Ref ls_rtn) = 1 Then
mle_1.Text = ls_rtn
//解析返回值
nvo_json n_json
n_json = Create nvo_json
n_json.Parse(ls_rtn)
//关键消息 ok为成功
ls_message = n_json.GetValue("message")
If ls_message = "ok" Then
//状态
sle_state.text=n_json.GetValue("state")
//解析到DW或者DS中
n_json.item2dw("data",dw_1)
Else
MessageBox("错误",ls_message)
End If
Destroy n_json
Else
MessageBox("错误",uo_vdn.LastError)
End If
2.2、 POST
///=============================================
// 描述: 通过hc_post函数可以直接以Post方式向指定的URL发起请求
//=============================================
string ls_html
uo_vdn.contenttype=uo_vdn.contenttype_urlencoded //指定发送的内容类型 可选
if uo_vdn.hc_post(sle_server.text,"wd=vdn",ref ls_html)=1 then
mle_1.text=ls_html
else
messagebox("错误",uo_vdn.LastError)
end if
三、Header、Cookie
在发起Get或Post Http请求,之前可以设置Header和Cookie,在服务器端响应后,可以获取返回的Header和Cookie值
uo_vdn.headerlist:Header列表
uo_vdn.hc_getHeader(Key)://获取单个Header值
uo_vdn.hc_setHeader(Key)://设置值
uo_vdn.cookielist:Cookie列表
uo_vdn.hc_getCookie(Key)://获取单个Cookie值
uo_vdn.hc_setCookie(Key)://设置Cookie值
//=============================================
// 描述:header及cookie的处理
//=============================================
string ls_html
if uo_vdn.hc_get("https://www.baidu.com/",ref ls_html)<>1 then return
//header
mle_1.text= uo_vdn.headerlist
//获取单个header的值使用hc_getheader
mle_1.text+=uo_vdn.hc_getheader("Content-Type")
//设置header值使用 hc_setheader(key,value)
//cookie
mle_1.text+= uo_vdn.cookielist
//获取单个cookie的值(根据站点的实际值处理)
mle_1.text+= uo_vdn.hc_getcookie("BAIDUID")
//设置cookie值使用 hc_setcookie(key,value)
四、上传到服务器
4.1、 上传文件
If uo_vdn.hc_upfile("http://www.xxx.com/Default.aspx","j:\1.png") = 1 Then
MessageBox("成功","文件上传完毕")
Else
MessageBox('错误',uo_vdn.LastError)
End If
4.2、上传BLOB
If uo_vdn.hc_upfile("http://www.xxx.com/Default.aspx",lb_data,"test.txt") = 1 Then
MessageBox("成功","文件上传完毕")
Else
MessageBox('错误',uo_vdn.LastError)
End If
五、下载文件
5.1、下载文件
ls_url="https://www.baidu.com/img/baidu_jgylogo3.gif"
if uo_vdn.downfile(ls_url,ls_path) =1 then
mle_1.text="文件下载完毕 存储在:"+uo_vdn.FilePath
end if
5.2、下载文件到BLOB
blob a_blob
if uo_vdn.downfile("https://www.baidu.com/img/baidu_jgylogo3.gif",ref a_blob)=1 then
p_1.setpicture(a_blob)
else
messagebox("错误",uo_vdn.LastError)
end if
六、其他属性
可以设置http请求的Referer、UserAgent、ContentType、Accept、ContentLength等属性,详见帮助文档
小结
也可以异步上传和下载文件,更多示例代码(Example\PB演示示例)及说明文档HttpClient一节。该组件同时支持Http(Https)协议的Get、Post,获取和设置页面内容、Header、Cookie等常规的Http操作
通过VDN组件PB还可以支持JOSN、加密、解密、压缩、解压缩、二维码、发送手机短信、查询快递等功能。
VDN还可以搭建自己的服务器端,快速的实现C/S转B/S运行、自动升级、微信公众号、微信企业公众号、微信扫码支付、钉钉平台、互联网数据库高速连接、Web App\WebAPI等功能