【问题标题】:PHP SOAPClient WCF Error sending parametersPHP SOAPClient WCF 错误发送参数
【发布时间】:2013-06-20 23:48:47
【问题描述】:

我正在使用 PHP SoapClient 开发 Web 服务。

webservice url 为:http://web.abaseguros.com/AutoConnect/ACCatalogos.svc?wsdl

这是我的代码:

<?php

ini_set("soap.wsdl_cache_enabled", "0");
$pin = new SoapClient("http://web.abaseguros.com/AutoConnect/ACCatalogos.svc?wsdl");

class Token {
    var $usuario;
    var $password;
    function Token($user,$pass) {
        $this->usuario = $user;
        $this->password = $pass;
    }
}

//User and Password for the token object
$Token = new Token('usuarioWCF','Pa$$w0rd');    

//XML 'Entrada' String
$Entrada = "<CAT><NEG>5786</NEG></CAT>"; 

$result = $pin->ObtenerMarcas($Token,$Entrada);

但是 PHP 打印出以下错误信息:

致命错误:未捕获的 SoapFault 异常:当我执行脚本时 [a:DeserializationFailed]。

公司给了我一个用C#写的示例代码

private void Obtener_Catalogo_ABASeguros()
{
string strEntrada, strSalida;

strEntrada = “<CAT><NEG>5786</NEG></CAT>“; +

ACCatalogosClient proxy = new ACCatalogosClient();


Token token = new Token();
token.usuario = "usuarioWCF";
token.password = "Pa$$w0rd";

try
{
    strSalida = proxy.ObtenerMarcas(token, strEntrada);
}
catch (FaultException<Error> ex)
    {
    txtCotSalida.Text = string.Format("Ocurrio un error en el WCF:\n " +
       "Origen: {0}\n "+
       "Mensaje: {1}\n "+
       "Stack: {2}", ex.Detail.Origen,        ex.Detail.Mensaje, ex.Detail.StackTrace);
}

但我仍然无法理解两种语言的参数是如何发送的。

有什么帮助吗?

【问题讨论】:

    标签: php wcf web-services soap soap-client


    【解决方案1】:

    您的 Soap 客户端不知道如何反序列化对象 Token。您需要将该令牌对象转换为关联数组,并将该数组用作操作的参数。

    $pin->ObtenerMarcas(get_object_vars($Token),$Entrada);
    

    恐怕即使您清除了此错误,您也无法成功使用该服务。看起来肥皂标头中需要 a 令牌。您放置的 C 代码并未向您展示所有内容,它具有封装在 Proxy 类中的实现。您需要阅读文档,否则您将不得不阅读嵌入在您提供的全局 wsdl 链接中的导入 wsdl 文件。

    【讨论】:

    • 它不起作用,致命错误:未捕获的 SoapFault 异常:[a:DeserializationFailed] 格式化程序在尝试反序列化消息时抛出异常:反序列化操作“ObtenerMarcas”的请求消息正文时出错。应来自命名空间“schemas.xmlsoap.org/soap/envelope”的结束元素“正文”。从命名空间“”中找到元素“param1”。
    • 是的,我正在尝试使用令牌对象发送 sap 标头,但没有关于它的文档。
    • 值得看看 c 代理类中的实现。抱歉,没有文档就帮不上什么忙了
    猜你喜欢
    • 1970-01-01
    • 2015-10-14
    • 1970-01-01
    • 1970-01-01
    • 2014-08-17
    • 1970-01-01
    • 1970-01-01
    • 2011-09-30
    • 1970-01-01
    相关资源
    最近更新 更多