有人可以帮助我解决这个问题吗,这是我的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 />";