Microsoft Tag SoapFault异常

时间:2013-07-24 16:02:52

标签: php soap tags

我正在尝试通过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,并且不知道如何打开这些服务器行为设置

1 个答案:

答案 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;
  }
}