SOAP的参数必须严格按照定义的顺序赋值

1 篇文章 0 订阅

 

好不容易调通了php的soap接口,一调用就出现奇怪的问题

 


try {
    $url = 'http://xxx.xxx.xxx.xxx/cgi-bin/fglccgi/ws/r/aws_plm?WSDL';
    $fun_name = 'xxxx.aws_gl_confirm';
    $t_data = [
            'dbs'      => 'szxx028',
            'ecb01'    => 'EA100030800',
            'ecb02'    => '000',
            'ta_ecb01' => '1',
            'ecb03'    => '1',
            'ty'       => 1
    ];

    $client = new SoapClient($url);
    $result = $client->__soapCall($fun_name, $t_data);
    echo '<pre>';

//    $result = json_decode($result);
    print_r($result);

    printf("Result = %s", $result['description']);
} catch (Exception $e) {
    printf("Message = %s", $e->__toString());
}

 

一查,才知道是参数赋值的顺序不对,

通常php的数组赋值哪管先后顺序的?

总之, 

SOAP的参数必须严格按照定义的顺序赋值

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要接收SOAP中的参数,需要使用Java中的SOAP库,例如JAX-WS或Apache Axis。以下是一个简单的示例: 假设我们有一个SOAP消息,其中包含一个名为“name”的参数,我们要在Java中接收它。 1. 首先,我们需要创建一个Java类来表示SOAP消息中的参数: ``` public class MySoapRequest { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } } ``` 2. 接下来,我们需要创建一个Java类来处理SOAP消息,并使用JAX-WS或Apache Axis将其绑定到SOAP消息: 使用JAX-WS: ``` @WebService public class MySoapService { @WebMethod public void processSoapRequest(MySoapRequest request) { String name = request.getName(); // 处理参数 } } ``` 使用Apache Axis: ``` public class MySoapService { public void processSoapRequest(MySoapRequest request) { String name = request.getName(); // 处理参数 } } // 在服务器端配置 AxisServlet servlet = new AxisServlet(); servlet.setOption("className", "MySoapService"); ``` 3. 最后,我们需要将SOAP消息发送到Java服务端,并从中提取参数: 使用JAX-WS: ``` // 创建SOAP消息 MySoapRequest request = new MySoapRequest(); request.setName("John"); // 创建SOAP客户端 MySoapService service = new MySoapService(); MySoapServicePort port = service.getMySoapServicePort(); // 调用SOAP方法并传递参数 port.processSoapRequest(request); ``` 使用Apache Axis: ``` // 创建SOAP消息 MySoapRequest request = new MySoapRequest(); request.setName("John"); // 创建SOAP客户端 Call call = new Call(); call.setTargetEndpointAddress(new URL("http://localhost:8080/MySoapService")); call.setOperationName(new QName("processSoapRequest")); // 调用SOAP方法并传递参数 call.invoke(new Object[]{request}); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值