PB使用MSXML2.ServerXMLHTTP方式send数据时失败

sisssoft 2018-09-21 09:07:11
oleobject iole_http

iole_http = create oleobject
iole_http.connecttonewobject("MSXML2.ServerXMLHTTP")
iole_http.settimeouts(10000,10000,10000,60000)

try
iole_http.open("POST",ls_url,false)
iole_http.setrequestheader("Content-type","application/x-www-form-urlencoded")
iole_http.setrequestheader("Content-Length",string(ll_length))
iole_http.send(lblb_args)
catch(runtimeerror rte)
ls_err = "请求异常:" + rte.getmessage()
end try

在执行时,如果与服务器网络不通时,send会超时失败,请问这时要如何获取这个失败的原因?我用rte.getmessage()获取到的是说我的send函数调用失败,像下面这样:Error: Error calling external object function send at line 23 in function of_put_json of object n_pos_pay_le.
而不是俱体的错误内容,这个俱体的错误内容有什么办法可以获取到吗?
...全文
3078 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lkmiawfn 2020-06-17
  • 打赏
  • 举报
回复
打开下IE看是否可以上网,,如是IE脱机了也会提示这个
sisssoft 2018-09-21
  • 打赏
  • 举报
回复
PB这个版块,真没人了么?唉!
WMERP 2018-09-21
  • 打赏
  • 举报
回复 1
//f_get_json_isbn

//https://api.douban.com/v2/book/isbn/9787543632608
//https://api.douban.com/v2/book/isbn/7543632608
long ll_pos
ll_pos=pos(as_isbn,'-')
do while ll_pos>0
as_isbn=left(as_isbn,ll_pos - 1)+mid(as_isbn,ll_pos + 1)
ll_pos=pos(as_isbn,'-')
loop


Blob lblb_args
String ls_headers
String ls_url
Long ll_length,ll_rest
ls_url="https://api.douban.com/v2/book/isbn/"+as_isbn
String ls_data,ls_response

OleObject lole_tenyear //声明ole
lole_tenyear = CREATE oleobject
lole_tenyear.ConnectToNewObject("Microsoft.XMLHttp") //帮顶XMLhttp组件,我测过xp和win7都自带,不需安装任何辅助软件如.net环境

lole_tenyear.open ("POST",ls_url, false) //参数解释请看:
//http://blog.csdn.net/ldl22847/article/details/9662927

lole_tenyear.setRequestHeader ("Content-type", "application/x-www-form-urlencoded")
lole_tenyear.setRequestHeader('Content-Length',string(len(ls_data)))
//lole_tenyear.send (' ')
lole_tenyear.send (ls_data) //关键是这一步:如果你的https的环境没有安装浏览器的认证的根证书,一定会报错退出,如果你申请安装了verisign等权威机构发的根证书,用ie打开上面的https,就不会报红色警告(问你是不是继续)。但pb不会提示你是不是继续,直接报错退出。verisign的证书一年好像要1万-10万元的服务费。在这里你如果想测试一下,你可以把上面的https地址换成https://www.alipay.com/ (支付宝的),不会报错的。注意:这里的证书及验证都是单向验证,不是双向的。
do While lole_tenyear.readyState <> 4 // ' 查询状态,延时
yield()
Loop
ls_response = lole_tenyear.responseText //返回结果
//messagebox(ls_url,ls_response)

IF lole_tenyear.Status >= 300 THEN
// MessageBox ("HTTP request failed:", lole_tenyear.StatusText ,Exclamation!,OK!)
END IF


destroy lole_tenyear
return ls_response
WMERP 2018-09-21
  • 打赏
  • 举报
回复
lblb_args 参数值是怎么来的

662

社区成员

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

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