简体   繁体   English

使用Soapclient调用Soap Web服务

[英]Call Soap webservices using Soapclient

I am doing first time SOAP api task. 我正在做第一次SOAP api任务。 I need to call SOAP api from TriSource as below. 我需要从TriSource调用SOAP api,如下所示。

I can't figure out, what's wrong with below code. 我不知道,下面的代码有什么问题。

<?php

$wsdl = "https://www.nobel-net.com/TSS_LOAD/TSS_LOAD.asmx?WSDL";// getcwd().'/TriSource.wsdl';
$options        = array('soap_version' => SOAP_1_2, 'trace' => 1, 'exceptions' => 1);
$client = new SoapClient($wsdl, $options);
// output of : var_dump($client->__getFunctions());
// array (size=4)
//  0 => string 'SandboxResponse Sandbox(Sandbox $parameters)' (length=44)
//  1 => string 'BoardResponse Board(Board $parameters)' (length=38)
//  2 => string 'SandboxResponse Sandbox(Sandbox $parameters)' (length=44)
//  3 => string 'BoardResponse Board(Board $parameters)' (length=38)
$xmlBody = 'this is a long xml stirng';

try
{
   $args = new SoapVar(new SoapVar($xmlBody, XSD_ANYXML),SOAP_ENC_OBJECT);

   // alternate try
   // $args = array(new SoapVar($xmlBody, XSD_ANYXML));

  $res = $client->Sandbox($args);
}
catch (SoapFault $e)
{
   var_dump($e);
}

I always get Soap fault as below. 我总是会出现如下Soap错误。

object(SoapFault)[4]
 protected 'message' => string 'System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> TSS_Load+ProgramError: Error writing Usage log.
 Object reference not set to an instance of an object.

 at TSS_Load.XML_Reader.AddLog(String Usage, String UserID, String Result, String Data) in c:\inetpub\wwwroot\TSS_LOAD\App_Code\TSS_Load.cs:line 3365
 at TSS_Load.Sandbox(String sData) in c:\inetpub\wwwroot\TSS_LOAD\App_Code\TSS_Load.cs:line 44
 --- End of inner exception stack trace ---' (length=485)

I found my mistake. 我发现了我的错误。 I was preparing SOAP argument wrong way. 我以错误的方式准备SOAP参数。 As per the wsdl the Sandbox type as below. 按照wsdl,沙盒类型如下。

// Class with sData string member
class Sandbox
{
  string sData;
}

SOAP variable for that as below. 如下所示的SOAP变量。

// PHP code
$args = array('sData'=>new SoapVar($xmlBody, XSD_ANYXML));

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM