我正在尝试通过SOAP api(php)创建一个类别和标记,并在我的开发服务器上不断收到错误。我也见过其他人也有这个问题,我想这可能是肥皂的错?类别创建正常,因此不包括在内,但这里是创建标记信息和错误
不断收到此错误 - 无法弄清楚发生了什么,类别工作正常,只是不会创建标记
<pre>
array(3) {
["userCredential"]=>
object(UserCredential)#55 (1) {
["AccessToken"]=>
string(36) "<myaccesstoken>"
}
["categoryName"]=>
string(13) "Site Group"
["tag"]=>
object(URITag)#58 (8) {
["MedFiUrl"]=>
string(32) "http://yoursite.com/c/17133"
["Title"]=>
string(12) "qrcode_17133"
["InteractionNote"]=>
NULL
["Status"]=>
string(6) "Active"
["Types"]=>
NULL
["UTCStartDate"]=>
string(25) "2013-07-24T10:48:12-05:00"
["UTCEndDate"]=>
NULL
["validTypes:private"]=>
array(7) {
[0]=>
string(3) "pdf"
[1]=>
string(3) "wmf"
[2]=>
string(4) "jpeg"
[3]=>
string(3) "png"
[4]=>
string(3) "gif"
[5]=>
string(4) "tiff"
[6]=>
string(3) "tag"
}
}
}
</pre>
SoapFault异常:[a:InternalServiceFault]由于内部错误,服务器无法处理请求。有关错误的更多信息,请在服务器上启用IncludeExceptionDetailInFaults(来自ServiceBehaviorAttribute或配置行为)以将异常信息发送回客户端,或者根据Microsoft .NET Framework 3.0 SDK文档启用跟踪并检查服务器跟踪日志。
我正在使用soap,并且不知道如何打开这些服务器行为设置
答案 0 :(得分:0)
这确实是一个SOAP问题。服务器正在运行php 5.1.6,localhost(它正在运行)正在运行5.3+。我追踪了SOAP请求消息,发现一个项目的变量标题没有通过服务器发送。
解决方案是使用您自己的扩展soap类并重写__doRequest方法,如下所示:
class MySoap extends SoapClient{
public function __doRequest( $request , $location , $action , $version , $one_way = 0 ){
$request = preg_replace('/<ns1:tag>/', '<ns1:tag xsi:type="ns1:URITag">', $request);
$ret = parent::__doRequest($request, $location, $action, $version);
$this->__last_request = $request;
return $ret;
}
}