关于php调Webservice的问题

tilun_099 2015-05-28 03:10:04
try{
$client = new SoapClient("http://api.yousite.com/web/CoreService?wsdl");
$param=array($xml);
$ret = $client->__call('invoke',$param);
$result = ob2ar($ret);
print_r($ret);exit;
}catch(Exception $e){
echo $e->getMessage();
}

返回错误:SOAP-ERROR: Parsing WSDL: Couldn't load from '****************' : SYSTEM or PUBLIC, the URI is missing
各位大哥,帮我看下,错在哪儿了,感激不尽!
...全文
326 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
tilun_099 2015-06-04
  • 打赏
  • 举报
回复
崩溃了都,好几天一直没解决。代码贴出来了。求指点迷津! try{ $url="http://sms.wintax.cn/axis/services/CoreService?wsdl"; $client = new SoapClient($url); //print_r($client->__getFunctions()); //print_r($client->__getTypes());exit; $param=array($xml,''); $resp = $client->__call('invoke',$param); print_r($resp);exit; }catch(Exception $e){ $err_str=$e->getMessage(); echo $err_str; } 报错: SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://sms.wintax.cn/axis/services/CoreService?wsdl' : failed to load external entity "http://sms.wintax.cn/axis/services/CoreService?wsdl"
tilun_099 2015-06-04
  • 打赏
  • 举报
回复
多谢版主,感激不尽。
tilun_099 2015-06-04
  • 打赏
  • 举报
回复
NND,这个问题也解决了,原来要加参数名。 $param_arr=array('in0'=>$post_xml,'in1'=>'');
xuzuning 2015-06-04
  • 打赏
  • 举报
回复
invokeResponse invoke(invoke $parameters) 告诉你: invoke 方法需要一个 invoke 结构的参数 返回一个 invokeResponse 结构 struct invoke { string in0; string in1; } 告诉你 invoke 结构有两个字符型变量,分别命名为 in0 和 in1 php 没有结构的概念,所以要用关联数组代替 $param_arr = array( 'in0' => '数据1', 'in1' => '数据2' ); $ret = $client->invoke($param_arr); 由结构 struct invokeResponse { string out; } 可知:在返回的对象中,返回的数据放在名为 out 的属性里
tilun_099 2015-06-04
  • 打赏
  • 举报
回复
我现在请求另一个webService时,又出现了一个新问题。。 $client = new SoapClient("http://www.etaxcn.com/webservice/services/CoreService?wsdl"); print_r($client->__getFunctions()); print_r($client->__getTypes()); $param_arr=array($post_xml,''); $ret = $client->invoke($param_arr); 有报文返回,但是接口方告诉我,得到的xml是空串。可我echo了xml,真真切切不是空的呀。 这种是什么情况呀。最近弄webservice太头疼了。 Array ( [0] => invokeResponse invoke(invoke $parameters) ) Array ( [0] => struct invoke { string in0; string in1; } [1] => struct invokeResponse { string out; } ) stdClass Object ( [out] => <?xml version="1.0" encoding="UTF-8" ?><root identity="BS44O9CP71L764DPQEUJURTAMHP3C8JO"><head><service><replyCode>FBRP011001</replyCode><replyMsg></replyMsg></service><createTime>1433404114418</createTime></head></root> )
tilun_099 2015-06-04
  • 打赏
  • 举报
回复
万万没想到呀,居然真的是这个问题,太操蛋了。弄了我三天,想尽了办法,还重编译了PHP。原来真是目标接口没把我IP加到白名单。。
tilun_099 2015-06-04
  • 打赏
  • 举报
回复
版主,是有来源限制的,是因为这个才引起的报错么?
xuzuning 2015-06-04
  • 打赏
  • 举报
回复

显然服务器做了来源检查
待我功成名就 2015-06-01
  • 打赏
  • 举报
回复
访问地址错误
tilun_099 2015-05-28
  • 打赏
  • 举报
回复
版主,地址真的可以打开的。 <wsdl:message name="batchSendSmsResponse"> <wsdl:part name="batchSendSmsReturn" type="soapenc:string"/> </wsdl:message> <wsdl:message name="invokeResponse1"> <wsdl:part name="invokeReturn" type="soapenc:string"/> </wsdl:message> <wsdl:message name="batchSendSmsRequest"> <wsdl:part name="xml" type="soapenc:string"/> </wsdl:message> <wsdl:message name="invokeRequest"> <wsdl:part name="xml" type="soapenc:string"/> ..................
xuzuning 2015-05-28
  • 打赏
  • 举报
回复
你把地址改了,怎么能知道你写对了没有 况且你各处的错误信息也显示地址不存在,不会你也改了吧
tilun_099 2015-05-28
  • 打赏
  • 举报
回复
版主,地址可以访问的。上面的地址是我改了的。。呵呵。
xuzuning 2015-05-28
  • 打赏
  • 举报
回复
错误信息显示:目标地址无法加载 用浏览器也确实访问不到
笔者曾混迹过各种攻防演练活动,参与过防守方、攻击方,也算是大概了解了每一个队伍的任务~参加防守时印象尤为深刻,也跟一起防守的“战友”做过有趣的事情,例如:反打攻击队;题外话说的有点多了,来说说为什么开发这样一个平台:作为一个防守方光看日志固然是枯燥无味的,偶尔来几次反向打击啥的,增添防守的乐趣~所以我想到了做这样一个系统,就是想在“空暇”时间能获取点“黑客攻击者”的“画像”。 本平台采用被动式的方式分析黑客攻击者画像,可扩展赋能蜜罐以及安全设备,将平台接口部署在蜜罐Web界面上即可,当攻击者访问所部署的Web界面即触发平台分析功能,对访问者进行分析,数据回传平台分析其网络身份、IP、IP定位:物理地址等信息。 AHRID 信息展示 平台支持接口授权的方式授权站点,已授权站点才可使用平台接口进行被动式的攻击者画像分析以及数据回传。 AHRID 接口授权 平台的分析功能采用模块化设计,可针对不同的分析功能新建不同的分析模块进而让平台的分析功能更加丰富完善(开源版本目前只支持JSONP探针模块) AHRID 提交模块 AHRID开源版使用 授权使用 登录进AHRID平台之后需要先添加接口授权: AHRID 接口授权 当添加完毕后,复制接口代码至蜜罐页面或需监测的页面中即可(建议复制到最后),这样就已经部署成功了,只需要等待攻击者触发数据回传功能,等待画像信息即可。 模块提交 当已经发现一个JSONP劫持漏洞时,即可提交到AHRID平台上: JSONP 劫持漏洞 漏洞地址:http://my.website/dorabox/csrf/jsonp.php?callback=test 要获取的信息:username 模块提交说明: 1. 名字模块名字(建议使用英文) 2. SRC存在JSONP劫持漏洞的URL地址 3. 回参数值回参数的值(参数=值) 4. 数据字段JSON字段(例如:{"username":"123"},要获取的是username即填写username;例如:{"data":{"uid":"123"}},要获取的是uid即填写data.uid) 5. 信息展示地址一般填写无或者随意填写 6. 模块描述根据模块功能说明 AHRID 模块提交示例 AHRID开源版设计概述 当攻击者访问到部署了AHRID接口的页面,即触发JSONP探针获取攻击者已登录状态下的登录信息,回传登录信息+IP+UA,后端会对IP进行物理地址转换,最终将数据记录到数据库。 数据库结构 表:Admin - 列:id,username,password 表:Hackinfo - 列:hid,host,ip,user_agent,jsondata,creaye_time,times 表:Plugins - 列:pid,name,src,callback,columns,url,commit 表:Apis - 列:aid,host IP地址转换依赖:GeoLite2-City.mmdb IP定位依赖:接口 apis.map.qq.com、way.jd.com + 取中心点 依赖环境:Python2 + Flask + Mysql 所需网络环境:互联网(可出网) AHRID开源版搭建 1.config.py 配置文件修改 需要配置的信息如下: USERNAME: Mysql用户名 PASSWORD: Mysql用户密码 HOST: Mysql主机地址 PORT: Mysql端口 SECRET_KEY: SESSION 秘钥(建议16位以上随机英文字母+数字+特殊符号) TX_KEYS: 腾讯接口KEYS(2个以上,参考:https://lbs.qq.com/webservice_v1/guide-ip.html) JCLOUD_KEY: 京东云接口KEY(Github可白嫖) 2.Mysql创建“ahrid”数据库 3.执行如下代码 python manage.py db init python manage.py db migrate 4.启动服务:sudo python app.py 默认端口为:80,可自行修改app.py文件如下代码部分 server = pywsgi.WSGIServer(('0.0.0.0', 80), app)

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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