0

我正在尝试通过 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 文档打开跟踪并检查服务器跟踪日志。

我正在使用肥皂,不知道如何打开这些服务器行为设置

4

1 回答 1

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;
  }
}
于 2013-08-27T18:28:08.303 回答