WSDL接口调用

import java.io.IOException;
import java.util.Iterator;
import java.util.Map;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.MarshalBase64;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import org.xmlpull.v1.XmlPullParserException;
public class WebServiceAction {
    public static SoapObject getSoapObject(String Wsdl, String methodName,
            Map<String, Object> inputmap, String NAMESPACE) {
        SoapObject reqSoapObject = new SoapObject(NAMESPACE, methodName);
        //遍历input
        Iterator iter = inputmap.entrySet().iterator();
        while (iter.hasNext()) {
            Map.Entry entry = (Map.Entry) iter.next();
            Object key = entry.getKey();
            Object val = entry.getValue();
            reqSoapObject.addProperty((String) key, val);
        }

        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
                SoapEnvelope.VER11);
        envelope.bodyOut = reqSoapObject;
        envelope.dotNet = false;
        envelope.encodingStyle="UTF-8";
        (new MarshalBase64()).register(envelope);
        HttpTransportSE transport = new HttpTransportSE(Wsdl, 20000);
        transport.debug = true;
        try {
            transport.call(NAMESPACE + methodName, envelope);
            if (envelope.getResponse() != null) {
                SoapObject get_soap = (SoapObject) envelope.getResponse();
                return get_soap;
            }
        } catch (IOException e) {
            e.printStackTrace();

        } catch (XmlPullParserException e) {
            e.printStackTrace();
        }
        return null;
    }

    public static Object getSoapObjectResponse(String Wsdl, String methodName,
            Map<String, Object> inputmap, String NAMESPACE) {
        SoapObject reqSoapObject = new SoapObject(NAMESPACE, methodName);
        // 遍历inputmap
        Iterator iter = inputmap.entrySet().iterator();
        while (iter.hasNext()) {
            Map.Entry entry = (Map.Entry) iter.next();
            Object key = entry.getKey();
            Object val = entry.getValue();
            reqSoapObject.addProperty((String) key, val);
        }

        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
                SoapEnvelope.VER11);
        envelope.bodyOut = reqSoapObject;
        envelope.dotNet = false;
        (new MarshalBase64()).register(envelope);
        HttpTransportSE transport = new HttpTransportSE(Wsdl, 30000);
        transport.debug = true;
        try {
            transport.call(NAMESPACE + methodName, envelope);
            if (envelope.getResponse() != null) {
                return envelope.getResponse();
            }
        } catch (IOException e) {
            e.printStackTrace();

        } catch (XmlPullParserException e) {
            e.printStackTrace();
        }
        return null;
    }

}

另一个方法是拼接soap数据

时间: 2024-08-23 23:48:30

WSDL接口调用的相关文章

提供了webservice的wsdl地址,如何生成消费端(客户端),怎么调用已经提供的wsdl接口

1.新建一个java项目,然后新建web service client. 2.输入wsdl地址 3.生成的消费端目录如下 如何根据提供的wsdl地址调用接口(传参和返回值的处理) 1 public static Map<String, Object> queryRecordMsg(String contNo){ 2 3 Map<String,Object> rootResult = new HashMap<String,Object>(); 4 try{ 5 Under

java调用wsdl接口

前提: ① 已经提供了一个wsdl接口 ② 该接口能正常调用 步骤1:使用cxf的wsdl2java工具生成本地类 下载CXF:http://cxf.apache.org/download.html 配置环境变量: CXF_HOME=E:\WebService\CXF\apache-cxf-2.1.1\apache-cxf-2.1.1 PATH后追加上“ ;%CXF_HOME%\bin” 验证:cmd命令行中输入wsdl2java,如果显示其用法表示配置好了. 运行命令 : wsdl2java 

C# 不添加WEB引用调用WSDL接口

在项目中添加WEB引用耦合度较高,更新时要更新引用,所以我建议不添加WEB引用调用WSDL接口,废话不多说,直接上代码 例如WSDL地址为:http://XXX.XX.XXX.XXX:9115/WsPortal/soap/ws?WSDL    需要调用execute方法  先查看描述文件参数 /// <summary> /// 需要WebService支持Post调用 /// </summary> public static XmlDocument QueryPostWebServ

EJBCA开发 webService接口调用

<转载请注明出处> 摸索这个东西好长时间了,资料太少无从下手找了个EJBCA的类似论坛的东西 一点点找入口..... 分享下:http://sourceforge.net/p/ejbca/discussion/132019/,有问题 里面的人很快会回答的,但是 他们是做盈利机构的有些问题.. EJBCA SVN路径:https://svn.cesecore.eu/svn/ejbca/tags/Rel_3_9_7/ejbca   这是3的版本 有其他的自己找吧. 一.先介绍下接口调用: EJBC

基于Axis1.4的webservice接口开发(接口调用)

一.webservice接口代码参考上一篇博客: http://www.cnblogs.com/zhukunqiang/p/7125668.html 二.代码部分 1.新建Web Project工程,取名为axiswebserviceClint,并导入Axis1.4所需jar包(将jar包粘贴到lib目录). 2.新建webservice接口调用类: package com.no8.clint; import java.net.URL; import javax.xml.rpc.ServiceE

微信公众号API测试——接口调用频率限制

接口频率限制[1] 公众号调用接口并不是无限制的.为了防止公众号的程序错误而引发微信服务器负载异常,默认情况下,每个公众号调用接口都不能超过一定限制,当超过一定限制时,调用对应接口会收到如下错误返回码: {"errcode":45009,"errmsg":"api freq out of limit"} 各接口调用频率限制如下: 接口 每日限额 获取access_token 2000 自定义菜单创建 1000 自定义菜单查询 10000 自定义菜

PHP 使用 curl_* 系列函数和 curl_multi_* 系列函数进行多接口调用时的性能对比

在页面中调用的服务较多时,使用并行方式,即使用 curl_multi_* 系列函数耗时要小于 curl_* 系列函数. 测试环境 操作系统:Windows 10 x64 Server:Apache 2.4.18 PHP:5.6.19 MySQL:5.7.11 cURL:7.47.1 测试数据库选择 MySQL 官方网站的样本数据库 sakila,下载地址:http://dev.mysql.com/doc/index-other.html 测试页面需要调用 3 个 api: getActorInf

ThinkPHP整合支付宝即时到账接口调用

首先是在支付宝的蚂蚁金服开放平台下载PHP的demo: 1 https://doc.open.alipay.com/doc2/detail?treeId=62&articleId=103566&docType=1 下载地址如上,里面有个MD5加密方式UTF8的PHP的demo可以拿来用,可以直接在localhost上跑,传入合适的参数即使体验支付一次,这点和微信支付接口调用的demo相同. 现在我们尝试将其中demo的lib类文件整合到thinkphp之中去. 将四个lib改名放入Vend

短信接口调用——阿里大于API开发心得

互联网上有许多公司提供短信接口服务,诸如网易云信.阿里大于等等.我在自己项目里需要使用到短信服务起到通知作用,实际开发周期三天,完成配置.开发和使用,总的说,阿里大于提供的接口易于开发,非常的方便,短信费用是计数缴纳的,作为个人开发者,我使用的服务产生的费用为0.45¥/条(10万条以下). 现在要实现一个例会短信群发通知的功能,所有被通知对象信息均存于Mysql中,应用架构采用asp.net MVC .首先准备好获取的API各项(以下各项服务参数都需要在大于官网上申请), 申请好自己的短信签名