之前请求通过curl实现了,但是我还是想研究下,为什么PHP原生的soapclient构造出来的请求不行。

通过对比:

echo "请求头:\n" . $client->__getLastRequestHeaders() . "\n";

echo "请求体:\n" . htmlspecialchars_decode($client->__getLastRequest()) . "\n";

echo "返回头:\n" . $client->__getLastResponseHeaders() . "\n";

echo "返回内容:\n" . $client->__getLastResponse() . "\n";

对比这四个值与在soapui中调试请求的内容的对比,发现请求的xml始终不一致,而如何构造也毫无头绪。

于是又看了下对方的wsdl文件。看到这样一段代码:

巧合下,我去查看了以下这个

complexType

于是找到这样一篇文章:http://blog.sina.com.cn/s/blog_61bafc5a0100mki2.html

文章告诉我们,php在调用这种webservice的时候,不能直接给参数赋值,而是应该使用stdclass

这时我们要传入的参数为对象类型,就要构造这么一个对象。

具体实现如下:

$p=new StdClass();

$p->Name="adolf";

$p->Age=22;

这个对象构造完成,把此对象实例作为参数传入即可。

就这样,原生的soapclient也解决了我的问题。附代码:

$client = new SoapClient("http://192.168.1.168:8080/center/services/HIPMessageServer?wsdl", array('trace' => 1));

$tmp=new stdClass();

$tmp->action='PatientRegistryFindCandidatesQuery';

//这里不再需要cdata的实体符号了

$tmp->message=iconv('gb2312','utf-8','./a.txt');

$result = $client->HIPMessageServer($tmp);

echo "请求头:\n" . $client->__getLastRequestHeaders() . "\n";

echo "请求体:\n" . htmlspecialchars_decode($client->__getLastRequest()) . "\n";

echo "返回头:\n" . $client->__getLastResponseHeaders() . "\n";

echo "返回内容:\n" . $client->__getLastResponse() . "\n";

var_dump((get_object_vars($result)));

------------正 文 已 结 束, 感 谢 您 的 阅 读 (折雨的天空)--------------------

php soapclient 乱码,接上一篇,php的soapclient的问题相关推荐

  1. Html做文章查看上一篇下一篇功能,SDCMS文章添加上一篇、下一篇

    SDCMS是一款小型ASP内容管理系统管理开源程序,虽然是小型的,但是主要功能都俱备.在细节方面,该款开源程序没有对内置标签进行统一的管理,不方便日后功能的修改,如果需要修改或者添加,需要去官方网站上 ...

  2. 织梦手机站下一篇变上一篇而且还出错Request Error!

    最新的织梦dedecms程序手机版下一篇变上一篇而且还出错Request Error!,这是因为官方写错了一个地方 打开 /include/arc.archives.class.php 找到 $mli ...

  3. PHP实现上一篇、下一篇

    //php实现上一篇.下一篇 获取当前浏览文章id$id = isset($_GET['id']) > 0 ? intval($_GET['id']) : "";下一篇文章$ ...

  4. 接上一篇Ansible和celery的结合,在celery的tasks.py文件里为了实现并发不阻塞的需求,用到了多进程

    接上一篇Ansible和celery的结合,在celery的tasks.py文件里为了实现并发不阻塞的需求,用到了多进程 举例如下:tasks.py文件如下: import signal from m ...

  5. php转盘抽奖源码yii2,yii2实现 上一篇,下一篇 功能的代码实例

    最近做了简答的文章详情页面,需要在页面底部加入上一篇,下一篇 按钮,分析了下,最基本需要有文章的标题和id(作为参数). 开始想的是当前的id加减1,但考虑到如果部分id丢失就不对了,于是分别查询比当 ...

  6. Spring整合Struts2框架的第一种方式(Action由Struts2框架来创建)。在我的上一篇博文中介绍的通过web工厂的方式获取servcie的方法因为太麻烦,所以开发的时候不会使用。...

    1. spring整合struts的基本操作见我的上一篇博文:https://www.cnblogs.com/wyhluckdog/p/10140588.html,这里面将spring与struts2 ...

  7. 完善ext.grid.panel中的查询功能(紧接上一篇)

    今天的代码主要是实现,Ext.grid.panel中的查询,其实我也是一名extjs新手,开始想的实现方式是另外再创建一个新的grid类来存放查询出的数据(就是有几个分类查询就创建几个grid类),这 ...

  8. ShopEx文章页增加上一篇下一篇功能

    在所有的文章页中,会经常发现都会有这么一个功能,能引导用户去查看上一篇文章或下一篇文章,而在ShopEx中,我DEZEND了一下文章模型,并没有找到上一篇这样的函数功能,因此,这就需要我们手动在对应的 ...

  9. php 点击之后保留样式,通过不修改arc.archives.class.php而保留原有样式调上一篇下一篇...

    今天织梦站长分享一个织梦内容页上下篇的调用方法,估计在大家在仿站的过程中,经常会碰到原站的上下篇很美观,比如如图类似的这种:或,但是用织梦原有调用上下篇的标签来调用,总达不到我们想要的效果,找不到原站 ...

最新文章

  1. 无参数的lambda匿名函数
  2. python pexpect 模块
  3. 有关中断唤醒源的思考
  4. 如何建立应付暂估明细查询
  5. SpringBoot打包时提示:Perhaps you are running on a JRE rather than a JDK?
  6. mysql动态扩展_动态可扩展查询MYSQL5.7JSON+虚拟列+Mybatis
  7. Wordpress 自定义文章类型添加 Categoried、Tags
  8. 创建3层的服务模板 (2)--- App-V package 和 Application Profile
  9. centos刻录工具_CentOS7.0 U盘刻录工具正式版
  10. Python 中 jieba 库
  11. 欧姆龙PLC的FinsTCP协议
  12. Excel如何快速删除图片背景?
  13. 怎样彻底卸载电脑上的软件
  14. 手机开机启动慢是什么原因_手机开机的速度太慢怎么办
  15. Html静态页面缓存问题,解决缓存更新不及时需清空缓存更新页面
  16. torch.cumsum(),torch.sum()
  17. win8宽带连接服务器未响应,关于Win8系统连接宽带错误的解决方法介绍
  18. DNS欺骗原理及工作工程分析
  19. “F5G+EIoT“构建能源物联网,助力电力物联网数据服务
  20. 自动追频超声波塑料焊接发生器电源设计

热门文章

  1. 配置IIS服务器!IIS-网站报500.19错误代码0x8007000d问题解决,处理程序“aspNetCore”在其模块列表中有一个错误模块“AspNetCoreModuleV2“解决
  2. html三个div相同高度,两个DIV高度自适应方法(左右两个DIV高度一样)
  3. ios 根据手势放大或缩小图片
  4. springboot+状态机
  5. 培训课后作业(1)番外篇
  6. Cocos Creator 性能优化——对象池
  7. cocoscreator如何使用对象池-对象池使用详解
  8. python烟花表白引大火_代码实现女孩子表白烟花效果~让你快速撩妹!
  9. xadmin后台管理
  10. 天啦噜!在家和爱豆玩“剪刀石头布”,阿里工程师如何办到?