集成在PHP,SoapClient,XML中



有人可以帮助我解决这个问题吗,这是我的PHP代码,我正在尝试从xml中的Web服务中获取信息

$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 />";

我可以连接到 Web 服务,但我的代码中存在问题,响应始终是"对象未实例化",__getLastRequest始终为空......我怎么能把这个...?

谢谢

此外。。。当我得到函数和类型时

功能

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

也许我需要知道的只是如何测试和验证所有功能,我在下载.exe后从 https://www.soapui.org 使用了soapui y只需放置WS链接和wooalaaaaaaa,我就可以获得结构来进行简单的数组和肥皂调用

这是我在 PHP 中的解决方案

首先是一个将对象转换为数组以了解答案的函数

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));

使用 Soapui 准备 XML 中的节点等数组

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

调用功能

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

在数组中转换结果

$result = obj2array($respuesta);

显示答案

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

相关内容

  • 没有找到相关文章

最新更新