PHP调用wsdl接口实例化SoapClient抛出异常

异常:Message:SOAP-ERROR: Parsing WSDL: Couldn‘t load from ‘http://*****?wsdl‘ : failed to load external entity "http://****?wsdl"。

本地调用接口正常,放到服务器上以后,出现了500错误。try{}cache(){}:

try{
          $client=new SoapClient($wsdl);
        }catch(Exception $e){
          echo ‘Message:‘.$e->getMessage();
       }

抛出异常:Message:SOAP-ERROR: Parsing WSDL: Couldn‘t load from ‘http://*****?wsdl‘ : failed to load external entity "http://****?wsdl"。

首先确认,服务器PHP环境配置和本地一样。也百度了很多解决办法,都没起作用,请教了接口的开发者.NET 工程师。发给一张截图:

解决办法:$client=new SoapClient($wsdl);这句代码前添加libxml_disable_entity_loader(false); 问题就这样解决了。

查libxml_disable_entity_loader()作用: Disable the ability to load external entities(禁用加载外部实体的能力)。

SoapClient在我的代码里面确实是外部的实体,我不禁用加载外部实体的能力,就可以实例化SoapClient。问题也就自然而然的解决了。

PHP调用Web services接口实例:

$url=‘http://****?wsdl‘;

$client = new SoapClient($url);
    $param = array("param1"=>$param1,"param2"=>$param2);

方法1:
     $p = $client->__soapCall(‘functionname‘,array("parameters"=>$param));        
     $arr= json_decode($p->functionnameResult,true);

方法2:

$ret2 = $client->functionname($param);  
    $actjson=$ret2->functionnameResult;
    $arr=json_decode($actjson,true);

return $arr;

时间: 2024-10-18 20:03:27

PHP调用wsdl接口实例化SoapClient抛出异常的相关文章

C# 不添加WEB引用调用WSDL接口

在项目中添加WEB引用耦合度较高,更新时要更新引用,所以我建议不添加WEB引用调用WSDL接口,废话不多说,直接上代码 例如WSDL地址为:http://XXX.XX.XXX.XXX:9115/WsPortal/soap/ws?WSDL    需要调用execute方法  先查看描述文件参数 /// <summary> /// 需要WebService支持Post调用 /// </summary> public static XmlDocument QueryPostWebServ

java调用wsdl接口

前提: ① 已经提供了一个wsdl接口 ② 该接口能正常调用 步骤1:使用cxf的wsdl2java工具生成本地类 下载CXF:http://cxf.apache.org/download.html 配置环境变量: CXF_HOME=E:\WebService\CXF\apache-cxf-2.1.1\apache-cxf-2.1.1 PATH后追加上“ ;%CXF_HOME%\bin” 验证:cmd命令行中输入wsdl2java,如果显示其用法表示配置好了. 运行命令 : wsdl2java 

java 调用wsdl接口同时将返回数据解析成json

package com.haiersoft.ushequmobile.utils; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.StringReader; import java.util.List; import java.util.Map; imp

C#/Java 调用WSDL接口及方法

一.C#利用vs里面自带的"添加web引用"功能: 1.首先需要清楚WSDL的引用地址  如:http://www.webxml.com.cn/Webservices/WeatherWebService.asmx 2.在.Net项目中,添加web引用. 3.在弹出页面中,输入URL->点击点击绿色图标(前往)按钮->自定义引用名->点击添加引用 4.添加成功,查看类中可调用的方法: 5.在项目中,调用wsdl中的方法. [csharp] view plain copy

【黑马Android】(14)webservice概念/调用/wsdl接口

webservice 的概念 webservice 就是一个应用程序,它提供一种通过web方式访问的api. 解决两个系统或者(应用程序)之间的远程调用..... 调用是跨语言,跨平台... webservice 最基本的组成部分就是客户端,服务端... MyServerSocket.java package cn.itcast.server; import java.io.IOException; import java.io.InputStream; import java.net.Serv

使用axis调用wsdl接口

1.需要用到的jar包如下: axis.jar.axis-ant.jar.commons-discovery-0.2.jar.commons-logging-1.0.4.jar.jaxrpc.jar.log4j-1.2.8.jar.saaj.jar.wsdl4j-1.5.1.jar 2.调用代码举例如下 /** * 查询用户手机信息 * 这个接口是网上免费提供的接口,需要电脑联网才能访问 */ public static void getMobileCodeInfo(){ String endp

python2.7调用wsdl接口

import suds url = "http://x.x.x.x:x/dcmsWebservice/webservice/phoneQueue?wsdl"client = suds.client.Client(url)phone = client.service['phoneQueue'].queueRegin('xxxx')print clientprint phone

webService学习之路(三):springMVC集成CXF后调用已知的wsdl接口

webService学习之路一:讲解了通过传统方式怎么发布及调用webservice webService学习之路二:讲解了SpringMVC和CXF的集成及快速发布webservice 本篇文章将讲解SpringMVC+CXF环境下,怎么调用其他系统通过webService方式暴露出来的接口 ① 为避免怀疑同一个项目中调用本项目的接口,这里我新打开一个eclipse通过最原始的方式发布了一个webservice并启动保证可以被访问 打开浏览器确认可以被访问 ②进入CXF/bin 利用wsdl2

java 调用webservice接口wsdl,推荐使用wsdl2java,放弃wsimport

网上说wsimport是jdk1.6后自带的客户端生成调用webservice接口的工具,其实我挺喜欢原生的东西,毕竟自家的东西用着应该最顺手啊,但往往让人惊艳的是那些集成工具. 本机jdk1.8.1的,直接按网上说的wsimport -keep -p wsimport.test http://****:****/***.wsdl 报警报错,报警warning可以忽略,但错误error 难以解决,说具有相同名称 "xxx" 的类/接口已在使用.请使用类定制设置来解决此冲突.找了许多资料