posturl提交json数据给服务器,搞了两天了,服务器返回data错误

pjjia 2015-08-05 03:39:15
需要向服务器提交json数据,使用pb的inet和InternetResult对象,
blob lblb_postdata,lb_utf8r,lb_returndata//
string ls_time,ls_round,ls_data,ls_content,ls_url,ls_headers,ls_returndata,ls_senddata
Long ll_length
int il_return
n_intrst ir_msgbox //InternetResult对象
inet iinet_base
ls_time = string(today(),'yyyymmdd')+string(now(),'hhmmss')
ls_round = string(rand(30000))
ls_data = "id=11107&msid="+is_msid+"&nonce="+ls_round+"&signtype=sha1&state=1×tamp="+ls_time
setnull(lb_utf8R)
lb_utf8R =lnv_encode.of_str2utf8(ls_data+','+is_apikey)//签名
IF lnv_hash.of_SHA1(lb_utf8R,ls_content) Then

Else
messagebox('提示','sha1错误')
End IF
il_return = GetContextService("Internet", iinet_base)
if il_return = 1 then
ir_msgbox = CREATE n_intrst
ls_url = "http://api.dc78.cn/Api/cash_post_bill?"+ls_data+"&msg_sign="+ls_content
ls_senddata = "data:{"+'"result": 1,"id": "201411270006","bill": [{"qty": "11","amt": "33","name": "农夫山泉","desc": "瓶/001","price": "3" }]}'
mle_1.text = ls_url
lblb_postdata = lnv_encode.of_str2utf8(ls_senddata)
ll_length = Len(lblb_postdata)

ls_headers = "Content-Type: " + &
"application/x-www-form-urlencoded" + &
"Content-Length: " + String( ll_length ) + "~n~n"
il_return = iinet_base.PostURL(ls_url,lblb_postdata, ls_headers,ir_msgbox)
lb_returndata = ir_msgbox.ib_data
ls_returndata = lnv_encode.of_utf8togbk(lb_returndata)
messagebox(string(il_return),ls_returndata)
destroy ir_msgbox
end if
提交时显示分店号错误,如果将url直接复制到浏览器中得到的是data错误,现在问题是如何提交json数据还有就是如何post图片或者文本文件,坐等指点
...全文
1390 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ethan Tung 2016-12-31
  • 打赏
  • 举报
回复
不知道为什么posturl传json时候,ls_url中的参数会丢失,就是问号后面的参数不显示,我用fidder跟踪发现的
my_aa 2015-08-07
  • 打赏
  • 举报
回复
那个pb扩展函数dll就有的吧
A啦Dbit 2015-08-07
  • 打赏
  • 举报
回复
试过你的这个地址,没能成功,会不会不支持POST ,建议再与第三方沟通一下
A啦Dbit 2015-08-07
  • 打赏
  • 举报
回复
试过你的这个地址,没能成功,会不会不支持POST ,建议再与第三方沟通一下
pjjia 2015-08-07
  • 打赏
  • 举报
回复
还在等待,好的解决方案抛过来,还在苦闷中
pjjia 2015-08-07
  • 打赏
  • 举报
回复
谢谢大家,第三方的后台应该没有什么问题,已有其他工具成功调用,今天有了新的进展,使用Microsoft.XMLHttp或者使用pbfunc.dll已经成功提交,"Content-type", "application/x-www-form-urlencoded"。可是使用posturl还没有解决,返回信息还是如此,大家集思广益,会持续关注这个问题
pjjia 2015-08-06
  • 打赏
  • 举报
回复
msid里面是分店号码,尝试过使用application/json ,也提示分店号错误,也尝试过将id=11107&msid=525&nonce=42&signtype=sha1&state=1×tamp=20150805160151&msg_sign=BF9ED4FBEDC1412D4C0994F3DECABA82353D331E 放到urldata中,也提示分店号码错误,也尝试过将上面提交的数据转换成uf8后,放到urldata中提交也是如此的提示,没有通过,需要向后台提交数据,数据的格式要求是json格式的,返回的数据也是json格式,不是单纯的验证,是提交好多条数据给后台,网站的后台是要求json格式的,尝试过直接调用ole n_pbfunc_encode lnv_encode n_pbfunc_hash lnv_hash blob lb_postdata,lb_utf8r,lb_returndata string ls_time,ls_round,ls_data,ls_content,ls_url,ls_headers,ls_returndata,ls_senddata Long ll_length int il_return n_intrst ir_msgbox inet iinet_base ls_time = string(today(),'yyyymmdd')+string(now(),'hhmmss') ls_round = string(rand(30000)) ls_data = "id=11107&msid="+is_msid+"&nonce="+ls_round+"&signtype=sha1&state=1×tamp="+ls_time setnull(lb_utf8R) lb_utf8R =lnv_encode.of_str2utf8(ls_data+','+is_apikey) IF lnv_hash.of_SHA1(lb_utf8R,ls_content) Then Else messagebox('提示','sha1错误') End IF ls_url = "http://api.dc78.cn/Api/cash_post_bill?"+ls_data+"&msg_sign="+ls_content String result OLEObject dom,http1 dom = CREATE OLEObject http1 = CREATE OLEObject //messagebox调试看是否成功 messagebox( 'http ',http1.ConnectToNewObject( "Msxml2.XMLHTTP")) ls_senddata = "data:{"+'"result": 1,"id": "201411270006","bill": [{"qty": "11","amt": "33","name": "农夫山泉","desc": "瓶/001","price": "3" }]}' lb_postdata = lnv_encode.of_str2utf8(ls_senddata) http1.Open( "POST ", ls_url, TRUE) http1.Send(lb_postdata) do While http1.readyState <> 4 // ' 查询状态,延时 yield() Loop result = http1.responseText //这个测试用! 你可不写 messagebox( 'result ',result) destroy http1 提示参数错误data,不再提示分店编码错误
北京大丸子 2015-08-05
  • 打赏
  • 举报
回复
另外你说的post图片或者文本文件,这个好像都是先上传,然后post url的模式吧
北京大丸子 2015-08-05
  • 打赏
  • 举报
回复
引用 2 楼 xiajinxian 的回复:
Content-Type:application/json 这样也试一下
posturl也可以用下面的形式,好像要blob一下,为何用格式json发送?json返回及解析没问题,发送json数据我见到的例子比较少。 id=11107&msid=525&nonce=42&signtype=sha1&state=1×tamp=20150805160151&msg_sign=BF9ED4FBEDC1412D4C0994F3DECABA82353D331E
A啦Dbit 2015-08-05
  • 打赏
  • 举报
回复
Content-Type:application/json 这样也试一下
pjjia 2015-08-05
  • 打赏
  • 举报
回复
使用geturl没有任何问题,posturl的url是:http://api.dc78.cn/Api/cash_post_bill?id=11107&msid=525&nonce=42&signtype=sha1&state=1×tamp=20150805160151&msg_sign=BF9ED4FBEDC1412D4C0994F3DECABA82353D331E

1,079

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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