zoukankan      html  css  js  c++  java
  • PHP调用webServer接口遇到的坑

    昨天公司分配给我一个任务,写一个中转接口,目标接口是一个webservice类型的接口,平时没有接触过,然后遇到一些坑,

      一般情况下,能在浏览器打开并显示数据的接口是直接可以使用 CURL或者file_get_contents进行接收的。但是WEBSERVICE是使用Soapservice.所以我们要打开soap扩展,才可以正常访问这种类型接口。

      上代码:insure是该接口的方法名

      

     $url = 'http://123.xxxxxx?wsdl';
        $client = new SoapClient($url, array('trace'=>true, 'soap_version' => SOAP_1_1));
        $result = $client->insure($data);

    这样我们就可以访问到接口了,然后第二个坑就是传参数问题。

      webservice类型的接口传值需要使用键值对形式进行传递

      我遇到的比较傻逼,他提供的接口文档值写明了需要什么类型的参数,但没有写明参数名。误导了我。

      遇到这种情况我们可以使用$types = $client->__getTypes();来查看该接口提供了什么方法,以及参数名,

    例如:

      我需要调的方法是第三个 insure 参数名是string类型的in0,

    Array
    (
        [0] => struct searchProductInfo {
     string in0;
    }
        [1] => struct searchProductInfoResponse {
     string out;
    }
        [2] => struct insure {
     string in0;
    }
        [3] => struct insureResponse {
     string out;
    }
        [4] => struct search {
     string in0;
    }
        [5] => struct searchResponse {
     string out;
    }
        [6] => struct surrender {
     string in0;
    }

    然后包装我们的参数

    $xml=file_get_contents("php://input"); //因为我的是中转接口,所以参数是由别人传入的,
    $data=array('in0'=>$xml); //方法名=>参数

    到此,我的任务完美完成。

    描述我遇到的问题以及解决思路,

    1.首先我第一次接触这种类型接口,不知道要用soap方式访问,我刚开始用的普通方式直接访问的,然后发现不行,百度之后才了解,换成soap方式访问

    2.能访问到接口之后,因为我是中转接口,数据不在我这里,我测试接口可以访问,且有返回值,我以为可以了,但是没有,调用我的接口后,返回的值与预计有差别,经检测是参数问题,

    3.接到问题后,首先排除了接口无法访问的问题,以及我这边没有接到数据的问题,接口可以访问,参数也没有问题,然后发现是我接到参数,但是我发送给webservice接口时,参数为空?!!经过研究(百度)然后发现webservice限制了只能以键值对传递参数,知道了问题就好解决了嘛,我给他包装成键值对不就完了嘛,然后就引发了下面的问题

    4.他的接口肯定需要参数嘛,但是他的参数名是什么???我看了下文档,只有接口名以及需要string类型的xml,emmm参数名呢?行吧,没有我自己找,上面我有写,怎么获取方法名以及参数名。

    暂时到这里。

  • 相关阅读:
    Javascript加载执行问题探索
    CentOS搭建WordPress
    ORACLE创建表空间,用户及授权
    ApacheCommonsDbutils 学习笔记
    Android SSL BKS证书生成, 以及PFX与JKS证书的转换
    VirtualBox虚拟机CentOS中安装增强插件失败,解决方法
    ORACLE %TYPE与%ROWTYPE
    Java代码调用C#实现的Web服务
    常用的Git命令
    js手机号正则表达式验证
  • 原文地址:https://www.cnblogs.com/cyk2/p/11396258.html
Copyright © 2011-2022 走看看