我知道如何在PHP中禁用WSDL-cache,但是强制重新缓存WSDL呢?
这就是我尝试的:我运行我的代码,缓存设置为禁用,并且新方法显示为受到尊重.然后我激活了缓存,但由于某种原因,我的旧的非工作wsdl再次出现.那么:我如何强制我的新WSDL覆盖我的旧缓存?
好吧,我想我需要另外一双眼睛来看看这个.我正在对远程服务器上的echo Web服务进行简单的php soapclient调用.我很确定我没有任何拼写错误,而且函数调用是正确的.但是,我收到一个致命的错误声称该函数不是一个有效的方法.下面是Web服务类型的var_dump.
array(4){[0] => string(88)"struct EspException {string Code; string Audience; string Source; string Message;}"[1] => string(71)"struct ArrayOfEspException {string Source; EspException Exception ;}"[2] => string(43)"struct EchoTestRequest {string ValueIn;}"[3] => string(45)"struct EchoTestResponse {string ValueOut;}"}
致命错误:未捕获的SoapFault异常:[客户端]函数("EchoTestRequest")不是/home/grafixst/public_html/cpaapp/echo_test.php:38中此服务的有效方法.堆栈跟踪:#0/home/grafixst/public_html /cpaapp/echo_test.php(38):SoapClient - > __ call('EchoTestRequest',Array)#1 /home/grafixst/public_html/cpaapp/echo_test.php(38):SoapClientAuth-> EchoTestRequest(Array)#2 {main }在第38行的/home/grafixst/public_html/cpaapp/drew/echo_test.php中抛出
这是我用来拨打电话的代码:
require_once('SoapClientAuth.php');
ini_set("soap.wsdl_cache_enabled", "0");
#- Loading the WSDL document
$server = "https://wsonline.seisint.com/WsAccurint/EchoTest?ver_=1.65";
$wsdl = $server . "&wsdl";
$client = new SoapClientAuth($wsdl,
array(
'login' => $username,
'password' => $password
));
$types = $client->__getTypes();
var_dump($types);
echo "</br>";
$req = …Run Code Online (Sandbox Code Playgroud) 伙计们,我被困住了,在过去的几个小时里,我的头撞了桌子.
我正在尝试使用一个服务,并且我有8个其他函数,我称之为本质上几乎是IDENTICAL,但是这个函数会导致'SOAP-ERROR:Encoding:违反编码规则'错误.
继承函数调用(为安全起见省略了wsdl):
function CanLoadProduct($data){
$client = new SoapClient('wsdl-url');
$params = array('username' => $this->username,
'password' => $this->password,
'prod' => $data['productid'],
'mdn' => $data['mdn']);
try {
$reply = $client->__soapCall("CanLoadProduct", $params);
} catch (Exception $e) {
echo 'Error: ', $e->getMessage(), "\n";
print_r($params);
die();
}
if( $reply['result'] == 1 ){
return TRUE; // 1 = true
} else {
return FALSE;
}
}
Run Code Online (Sandbox Code Playgroud)
好的,这个函数,连接到web服务,所需的元素是:用户名,密码,prod,mdn,我提供的所有4个作为$ params数组的一部分.用户名/传递是先前定义的,并且工作正常,因为其他8个函数使用Web服务没有任何问题.
$ data []数组(我传递给函数)包含:$ data ['productid'] $ data ['mdn']没有使用其他内容.
我正进入(状态
SOAP-ERROR: Encoding: Violation of encoding rules
Run Code Online (Sandbox Code Playgroud)
由于一些无法解释的原因,谷歌搜索这个错误让我无处可去.其他人遇到这个?运行PHP 5.2.9-2.奇怪的是这与100%的这个功能相同:
function …Run Code Online (Sandbox Code Playgroud)