这个 soap 请求中缺少什么?
What is missing in this soap request?
我正在尝试使用 SOAP API,这是 WSDL:http://clientes.tcc.com.co/servicios/informacionremesas.asmx?wsdl 特别是调用的方法:ConsultarInformacionRemesasEstadosUEN
问题是,当我使用一个名为 SoapUI 的程序发出请求时,我得到了 200 响应,但是当我从我的 Laravel 项目中发出请求时,我得到了一个错误。我做错了什么?
protected $pass ;
protected $url;
public function __construct($pass='APIKEY',$url="http://clientes.tcc.com.co/servicios/informacionremesas.asmx?wsdl")
{
$this->pass=$pass;
$this->url=$url;
}
public function test()
{
try{
$param=array('Clave'=>$this->pass,'numeroremesa'=>433654926,'unidadnegocio'=>1,'Respuesta'=>0);
$client = new SoapClient($this->url,array('trace'=>TRUE));
$response =$client->ConsultarInformacionRemesasEstadosUEN($param);
dd($client->__getLastRequest());
exit;
// $array= json_decode(json_encode($response),true);
}
catch(Exeption $fault){
return response()->json(['entro'=>'entro en la exepcion',"error"=>$fault->getMessage()],400);
}
}
我收到以下 500 错误
"message": "System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.NullReferenceException: Object reference not set to an instance of an object.\n at ServiciosWeb.InformacionRemesas.ConsultarInformacionRemesasEstadosUEN(String Clave, List`1 remesas, List`1& remesasrespuesta, Int32& Respuesta, String& Mensaje) in C:\TCC\Proyectos\Legacy\WSNET\2-Desarrollo\3-Servicios\ServiciosWeb\ServiciosWeb\InformacionRemesas.asmx.vb:line 443\n --- End of inner exception stack trace ---",
"exception": "SoapFault",
"file": "C:\xampp\htdocs\GirosYa\app\Http\Controllers\Api\ExternalApis\TccController.php",
"line": 35,
"trace": [
{
"file": "C:\xampp\htdocs\GirosYa\app\Http\Controllers\Api\ExternalApis\TccController.php",
"line": 35,
"function": "__call",
"class": "SoapClient",
"type": "->"
},
它可以使用 SoapUI,所以我不确定该软件是否添加了 header 或类似的东西,非常感谢您的帮助。
根据该 WSDL 和错误消息,您的 'numeroremesa'=>433654926,'unidadnegocio'=>1
似乎需要包装在主数组中的键为 "remesas" 的数组中。这意味着您的 $param
应该如下所示:
$param=array('Clave'=>$this->pass,'remesas' => array('numeroremesa'=>433654926,'unidadnegocio'=>1),'Respuesta'=>0)
指示这一点的 WSDL 部分是:
<s:element minOccurs="0" maxOccurs="1" name="remesas" type="tns:ArrayOfRemesaUEN"/>
...
<s:element minOccurs="0" maxOccurs="unbounded" name="RemesaUEN" nillable="true" type="tns:RemesaUEN"/>
...
<s:complexType name="RemesaUEN">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="numeroremesa" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="unidadnegocio" type="s:string"/>
</s:sequence>
</s:complexType>
指示此错误消息的部分是:
at
ServiciosWeb.InformacionRemesas.ConsultarInformacionRemesasEstadosUEN(String
Clave, List1 remesas, List
1& remesasrespuesta, Int32& Respuesta,
String& Mensaje)
注意为函数显示的参数列表
我正在尝试使用 SOAP API,这是 WSDL:http://clientes.tcc.com.co/servicios/informacionremesas.asmx?wsdl 特别是调用的方法:ConsultarInformacionRemesasEstadosUEN
问题是,当我使用一个名为 SoapUI 的程序发出请求时,我得到了 200 响应,但是当我从我的 Laravel 项目中发出请求时,我得到了一个错误。我做错了什么?
protected $pass ;
protected $url;
public function __construct($pass='APIKEY',$url="http://clientes.tcc.com.co/servicios/informacionremesas.asmx?wsdl")
{
$this->pass=$pass;
$this->url=$url;
}
public function test()
{
try{
$param=array('Clave'=>$this->pass,'numeroremesa'=>433654926,'unidadnegocio'=>1,'Respuesta'=>0);
$client = new SoapClient($this->url,array('trace'=>TRUE));
$response =$client->ConsultarInformacionRemesasEstadosUEN($param);
dd($client->__getLastRequest());
exit;
// $array= json_decode(json_encode($response),true);
}
catch(Exeption $fault){
return response()->json(['entro'=>'entro en la exepcion',"error"=>$fault->getMessage()],400);
}
}
我收到以下 500 错误
"message": "System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.NullReferenceException: Object reference not set to an instance of an object.\n at ServiciosWeb.InformacionRemesas.ConsultarInformacionRemesasEstadosUEN(String Clave, List`1 remesas, List`1& remesasrespuesta, Int32& Respuesta, String& Mensaje) in C:\TCC\Proyectos\Legacy\WSNET\2-Desarrollo\3-Servicios\ServiciosWeb\ServiciosWeb\InformacionRemesas.asmx.vb:line 443\n --- End of inner exception stack trace ---",
"exception": "SoapFault",
"file": "C:\xampp\htdocs\GirosYa\app\Http\Controllers\Api\ExternalApis\TccController.php",
"line": 35,
"trace": [
{
"file": "C:\xampp\htdocs\GirosYa\app\Http\Controllers\Api\ExternalApis\TccController.php",
"line": 35,
"function": "__call",
"class": "SoapClient",
"type": "->"
},
它可以使用 SoapUI,所以我不确定该软件是否添加了 header 或类似的东西,非常感谢您的帮助。
根据该 WSDL 和错误消息,您的 'numeroremesa'=>433654926,'unidadnegocio'=>1
似乎需要包装在主数组中的键为 "remesas" 的数组中。这意味着您的 $param
应该如下所示:
$param=array('Clave'=>$this->pass,'remesas' => array('numeroremesa'=>433654926,'unidadnegocio'=>1),'Respuesta'=>0)
指示这一点的 WSDL 部分是:
<s:element minOccurs="0" maxOccurs="1" name="remesas" type="tns:ArrayOfRemesaUEN"/>
...
<s:element minOccurs="0" maxOccurs="unbounded" name="RemesaUEN" nillable="true" type="tns:RemesaUEN"/>
...
<s:complexType name="RemesaUEN">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="numeroremesa" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="unidadnegocio" type="s:string"/>
</s:sequence>
</s:complexType>
指示此错误消息的部分是:
at ServiciosWeb.InformacionRemesas.ConsultarInformacionRemesasEstadosUEN(String Clave, List
1 remesas, List
1& remesasrespuesta, Int32& Respuesta, String& Mensaje)
注意为函数显示的参数列表