2017-06-21 47 views
0

能有人帮助我解决这个问题,这是我的PHP代码中,我试图在XML从Web服务获取信息整合PHP,SoapClient的,XML

$cliente = newSoapClient("http://000.000.000.000/uat_abbott_service/AbbottService.svc?wsdl", array("trace" => 1, "exception" => 0)); 

$parametros_entCredencial     = array(); 
$parametros_entCredencial['Login']   = 'PAGUE'; 
$parametros_entCredencial['Password']  = 'P4gu3'; 
$parametros_entCredencial['SucursalId']  = '1'; 
$parametros_entCredencial['SucursalCaja'] = '11'; 
$parametros_entCredencial['EmpleadoId']  = '22222'; 
$parametros_entPaciente      = array(); 
$parametros_entPaciente['Documento']  = '9837720122'; 
$parametros_entPaciente['Tarjeta']   = ''; 

$parametros_ValidarPaciente     = array(); 
$parametros_ValidarPaciente     = array_merge($parametros_entCredencial, $parametros_entPaciente); 
$parametros_ValidarPaciente     = (object)$parametros_ValidarPaciente; 
var_dump($parametros_ValidarPaciente); 
echo "<br />"; 


$respuesta = $cliente->ValidarPaciente($parametros_ValidarPaciente); 

var_dump($respuesta); 
echo "<br />"; 
echo "Last Request<br />"; 
var_dump($cliente->__getLastRequest()); 
echo "Last answer<br />"; 
var_dump($cliente->__getLastResponse()); 
echo "end<br />"; 

我可以连接到网络服务,但是在我的代码中有一个问题,总是响应是“对象没有实例化”,__getLastRequest总是空的... 我该如何索取这个...?

感谢

另外... 当我得到functios和类型

功能

ValidarPacienteResponse ValidarPaciente(ValidarPaciente $parameters) 
CotizarVentaResponse CotizarVenta(CotizarVenta $parameters) 
ConfirmarVentaResponse ConfirmarVenta(ConfirmarVenta $parameters) 
ValidarCancelacionResponse ValidarCancelacion(ValidarCancelacion $parameters) 
CancelarVentaResponse CancelarVenta(CancelarVenta $parameters) 
ConciliarVentaResponse ConciliarVenta(ConciliarVenta $parameters) 
ConciliarCancelacionResponse ConciliarCancelacion(ConciliarCancelacion $parameters) 

类型

struct entCredencial { string Login; string Password; string SucursalId; 
string SucursalCaja; string EmpleadoId; } 
struct entPaciente { string Documento; string Tarjeta; } 
struct entToken { string Token; entMensaje Mensaje; } 
struct entMensaje { short Codigo; } 
struct ArrayOfentMedicamento { entMedicamento entMedicamento; } 
struct entMedicamento { string Codigo; string CodigoDeBarras; int Cantidad; } 
struct entCotizacion { string Id; entMensaje Mensaje; entCompra Compra; entSugerenciaCompra SugerenciaCompra; } 
struct entCompra { ArrayOfentMedicamentoCompra Medicamentos; } 
struct ArrayOfentMedicamentoCompra { entMedicamentoCompra entMedicamentoCompra; } 
struct entMedicamentoCompra { string IdentificadorCompra; entMedicamento Medicamento; ArrayOfentBeneficio Beneficios; } 
struct ArrayOfentBeneficio { entBeneficio entBeneficio; } 
struct entBeneficio { string IdentificadorCompra; string Codigo; string CodigoDeBarras; int Cantidad; boolean Entregado; } 
struct entSugerenciaCompra { ArrayOfentMedicamentoCompra Medicamentos; } 
struct entTransaccion { string IdConfirmacion; string Ticket; entMensaje Mensaje; } 
struct entCancelacion { entToken Token; ArrayOfentMedicamentoCompra Medicamentos; } 
struct ValidarPaciente { entCredencial usuario; entPaciente paciente; } 
struct ValidarPacienteResponse { entToken ValidarPacienteResult; } 
struct CotizarVenta { entToken token; ArrayOfentMedicamento medicamentos; } 
struct CotizarVentaResponse { entCotizacion CotizarVentaResult; } 
struct ConfirmarVenta { entToken token; string ticket; entCotizacion cotizacion; } 
struct ConfirmarVentaResponse { entTransaccion ConfirmarVentaResult; } 
struct ValidarCancelacion { entCredencial usuario; entTransaccion transaccion; } 
struct ValidarCancelacionResponse { entCancelacion ValidarCancelacionResult; } 
struct CancelarVenta { entToken token; entTransaccion transaccion; } 
struct CancelarVentaResponse { entTransaccion CancelarVentaResult; } 
struct ConciliarVenta { entCredencial usuario; string ticket; } 
struct ConciliarVentaResponse { entTransaccion ConciliarVentaResult; } 
struct ConciliarCancelacion { entCredencial usuario; string ticket; } 
struct ConciliarCancelacionResponse { entTransaccion ConciliarCancelacionResult; } 
+0

试试这个验证您的WSDL 的var_dump功能($客户端 - > __ getTypes()); –

+0

这是涉及函数的所有函数和类型 ValidarPacienteResponse ValidarPaciente(ValidarPaciente $参数) 类型 struct entCredencial {string Login;字符串密码;字符串SucursalId;字符串SucursalCaja;字符串EmpleadoId; } struct ValidarPaciente {entCredencial usuario; entPaciente paciente; } struct entPaciente {string Documento;字符串Tarjeta; } – iohan

回答

0

也许我需要知道的是如何测试并验证所有功能,我使用https://www.soapui.org之后的soapui下载.exeŸ只是把WS链接和wooalaaaaaa,我可以得到的结构,使一个简单的数组和SOAP调用

这是我在PHP

第一个函数来转换对象数组知道解决方案使用的soapUI

解答了

function obj2array($obj) { 
$out = array(); 
foreach ($obj as $key => $val) { 
switch(true) { 
    case is_object($val): 
     $out[$key] = obj2array($val); 
     break; 
    case is_array($val): 
     $out[$key] = obj2array($val); 
     break; 
    default: 
    $out[$key] = $val; 
} 
} 
return $out; 
} 

现在连接到WS

$cliente = new SoapClient("http://000.000.00.00/uat_abbott_service/AbbottService.svc?wsdl", array("trace" => 1, "exception" => 0)); 

准备像在XML节点阵列

$usuario = array('Login' => 'USERWS', 
        'Password' => 'PASSWORD-WS', 
        'SucursalId' => '1', 
        'SucursalCaja'=>'11', 
        'EmpleadoId'=>'22222'); 
$Paciente = array('Documento'=>'CONSULT', 
        'Tarjeta'=>'' 
        ); 

呼叫funtcion

$respuesta = $cliente->ValidarPaciente(array('usuario'=> $usuario, 'paciente'=> $Paciente)); 

转换结果阵列

$result = obj2array($respuesta); 

显示答案

echo "Token ".$result["ValidarPacienteResult"]["Token"]."<br />"; 
echo "Mensaje ".$result["ValidarPacienteResult"]["Mensaje"]["Codigo"]."<br />";