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图片或者文本文件,坐等指点
...全文
1503 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
内容概要:SSD2828QN4是一款MIPI主桥接芯片,用于连接应用处理器与传统并行LCD接口及支持MIPI从属接口的LCD驱动器。该芯片支持最高每通道1Gbps的串行链路速度,最多可配置4个数据通道,显著减少了信号数量。它支持多种接口模式,包括RGB+SPI组合接口,适用于驱动智能或非智能显示面板,并能通过命令模式和视频模式传输数据。芯片内置时钟和复位模块、外部接口、协议控制单元(PCU)、包处理单元(PPU)、错误校正码/循环冗余校验(ECC/CRC)模块、长包和命令缓冲区、D-PHY控制器、模拟收发器以及内部锁相环(PLL),确保了高效的数据传输和系统稳定性。此外,文档详细描述了芯片的引脚分配、寄存器设置、操作模式、电源序列、时序特性等关键参数,为开发者提供了全面的技术指导。 适合人群:具备一定硬件设计基础,从事嵌入式系统开发、显示技术研究的研发人员。 使用场景及目标:①实现应用处理器与MIPI兼容显示屏之间的高速数据传输;②优化显示系统的功耗表现,减少电磁干扰(EMI);③通过灵活配置不同接口模式来适应各种显示设备的需求。 阅读建议:此文档面向具有一定电子工程背景的专业人士,建议读者结合实际项目需求深入理解各章节内容,特别是关于寄存器配置、时序要求等方面的具体说明。对于初次接触此类技术的开发者而言,建议先熟悉基本概念再逐步掌握高级功能的应用方法。

1,111

社区成员

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

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