DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: melqui
今日帖子: 14
在线用户: 26
导航: 论坛 -> Web应用开发 斑竹:bodies  
作者:
男 xabbs (xabbs) ★☆☆☆☆ -
普通会员
2021/10/15 21:43:45
标题:
delphi调用webservice过程涉及XML不会了。 浏览:1748
加入我的收藏
楼主: 用delphi调用webservice过程checkin,该函数的方法的原型是
方法: 
String checkin (String xml)
输入格式: 
<webService>
 <request>
<!--唯一标识码-->
<ServletId>FD458785F14554D</ServletId>
</request>
</webService>

我用php调用好着呢,如下:
$str = '<webService><request><ServletId>fff7c837b09247b67d80</ServletId></request></webService>';   
$result = $client->checkin(array('strXML' => $str));
$result = get_object_vars($result);   
print_r($result);

我在delphi里面的调用是
  statusQuery := GetsDataInfraceSoap;
  str:=  '<webService><request><ServletId>fff7c837b09247b67d80</ServletId></request></webService>';
  statusStr:=statusQuery.checkIn(qqNumber);
  Memo2.Lines.Text :=  statusStr;

由于定义的格式是一个xml格式的,我怎么传递,服务器都收不到有效的信息。请问这里应该怎么来传递数值。谢谢大考伙儿了。
----------------------------------------------
-
作者:
男 tuesdays (Tuesday) ▲▲▲▲△ -
普通会员
2021/10/15 22:55:45
1楼: echo $client->checkin(array('strXML' => $str));

看返回值.
----------------------------------------------
delphi界写python最强, python界写delphi最强. 写自己的代码, 让别人去运行.
作者:
男 roadrunner (roadrunner) ★☆☆☆☆ -
盒子活跃会员
2021/10/16 10:58:43
2楼: delphi自动生成调用的XML格式和自动解析返回的XML,所以你的代码里不应当有任何XML处理语句,如果有,那就肯定重复处理了
----------------------------------------------
-
作者:
男 xabbs (xabbs) ★☆☆☆☆ -
普通会员
2021/10/16 12:10:46
3楼: TO:   echo $client->checkin(array('strXML' => $str));

这个格式需要转换,不转换的话在PHP里面直接返回结果了。是正常的。
----------------------------------------------
-
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2021/10/18 20:54:50
4楼: MD,写了一大段,提交时说有敏感词。也不说是哪个,想改都不知道改哪里。

【输入的内容包含违法信息:J】
----------------------------------------------
-
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2021/10/18 20:57:16
5楼: 楼主,先搞懂基本概念:

1. WebService 是一种基于 Web 的 SOAP 调用。实际上,SOAP 还可以基于其它通讯比如 TCP 或者 UDP;我就曾经把 Delphi 的 WebService 框架改到 UDP 上跑。


3. 在 Delphi 来看,你无需去考虑 XML,你要知道的是服务器提供了哪些函数调用,直接去调用那些函数就可以了。任何程序(Delphi 写的,Java 写的),都是调用函数。至于在调用函数的时候,程序提供的 WebService 框架,会在底层帮你封装为一堆 XML 传到服务器端,服务器端处理完后把处理结果封装成 XML 再传递给客户端,这个你写代码的人可以不用管,你看到的就是调用一个函数,然后函数返回值。


4. 如果一个其它语言写的 WebService,一个 Delphi 程序员怎么知道它有哪些函数?Delphi IDE 提供了导入一个 WebService 服务器的接口函数的方法。导入以后,就是一个 PAS 文件,引用这个文件,使用里面的函数,搞定!

5. 正如2楼所说,你不需要去管 XML 的处理问题。当然,你如果要深入底层去了解,也是可以的,尤其是在 debug 的时候。

6. Delphi 也可以开发 WebService 的服务器端。Delphi 开发的 WebService 的服务器端,可以用其它语言写的客户端来调用。当然也可以用 Delphi 自己写的客户端来调用。这就是 WebService 当初提出来的初衷:
6.1. 基于WEB,通讯比较成熟和方便;
6.2. 各种语言写的代码可以互相调用。
----------------------------------------------
-
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2021/10/18 21:00:14
6楼: 2. SOAP 是一种远程调用,是指一个程序远程调用另外一个程序给出来的函数,通讯协议是基于 XML,就好比现如今流行的 REST 的通讯协议是基于 J-S-O-N。

----------
原来是这一段有问题,改几个字看看能不能发出来。
----------------------------------------------
-
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2021/10/18 21:00:34
7楼: 沃日,原来 J-S-O-N 是非法信息!
----------------------------------------------
-
作者:
男 xabbs (xabbs) ★☆☆☆☆ -
普通会员
2021/10/25 15:11:02
8楼: 感谢pcplayer兄弟。

J-S-O-N确实被过滤了。

楼上的回复我已经认真阅读。事实上就是因为调用这块儿,我在delphi里面,只传递数值,或者字段=数值等换不同的样式死活不行。服务器端咱没法调试,只能黑着试,所以才想到是不是对传入的类型或者格式有特定要求。
----------------------------------------------
-
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2021/10/25 15:42:35
9楼: 正常的 WebService 服务器端,它给出的就是各种函数。你只要能导入服务器端的函数,调用函数,就行了。

至于服务器端的函数,里面有个参数是 string,而这个 string 本身可能服务器端有什么要求,比如必须是 XML 等等,那个和 WebService 没有关系,是服务器端程序自己定义的。这个就好比一个 DLL 输出了一个函数,里面有个参数是 string,你随便搞个字符串进去它不认,是因为这个DLL内部的实现代码自己规定了一些规则,你必须要拿到开发这个 DLL 的人给出的文档才行。
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行82.03125毫秒 RSS