这几天在写webservice接口,其他的调用方式要生成客户端代码,比较麻烦,不够灵活,今天学习了一下httpclient调用ws的方式,感觉很实用,话不多说,上代码

http://testhcm.ycgwl.com:8070/hcm/service/MDMWebService?wsdl

package com.ycgwl.rosefinch.module.basedev.server.services.base.util;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.InputStreamRequestEntity;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.RequestEntity; import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.*; public class HttpClientTest {
/**
* 访问服务
*
* @param wsdl wsdl地址
* @param ns 命名空间
* @param method 方法名
* @param list 参数
* @return
* @throws Exception
*/
public synchronized static String accessService(String wsdl, String ns, String method, List<String> list, String result) throws Exception {
StringBuffer stringBuffer = new StringBuffer(); //拼接参数
for (int i = 0; i < list.size(); i++) {
stringBuffer.append("<arg" + i + ">" + list.get(i) + "</arg" + i + ">");
} String soapResponseData = "";
//拼接SOAP
StringBuffer soapRequestData = new StringBuffer(""); // String arg0="{\"system\": \"BDMSigner\", \"keyCode\": \"SVP26FTvzwMTMWDVDP9jZw==\",\"change\": \"2018-05-12 18:17:05\"}";
// String arg1="TB_ORG_POSITION";
// String arg2="2018-05-12 18:17:05";
// String arg3="2018-05-12 18:17:05";
// String arg4="1"; soapRequestData.append("<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:ser=\"http://service.info.employee.staffing.talentbase.neusoft.com/\">");
soapRequestData.append("<soapenv:Header/>");
soapRequestData.append("<soapenv:Body>");
soapRequestData.append("<ser:" + method + ">");
soapRequestData.append(stringBuffer);
// soapRequestData.append("<arg0>"+arg0+"</arg0>");
// soapRequestData.append("<arg1>"+arg1+"</arg1>");
// soapRequestData.append("<arg2>"+arg2+"</arg2>");
// soapRequestData.append("<arg3>"+arg3+"</arg3>");
// soapRequestData.append("<arg4>"+arg4+"</arg4>");
soapRequestData.append("</ser:" + method + ">");
soapRequestData.append("</soapenv:Body>" + "</soapenv:Envelope>");
PostMethod postMethod = new PostMethod(wsdl);
// 然后把Soap请求数据添加到PostMethod中
byte[] b = null;
InputStream is = null;
try {
b = soapRequestData.toString().getBytes("utf-8");
is = new ByteArrayInputStream(b, 0, b.length);
RequestEntity re = new InputStreamRequestEntity(is, b.length, "text/xml; charset=UTF-8");
postMethod.setRequestEntity(re);
HttpClient httpClient = new HttpClient();
int status = httpClient.executeMethod(postMethod); if (status == 200) {
soapResponseData = getMesage(postMethod.getResponseBodyAsString(), result);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (is != null) {
is.close();
}
}
return soapResponseData;
} public static String getParam(Map<String, String> params) {
String param = "";
if (params != null) {
Iterator<String> it = params.keySet().iterator();
while (it.hasNext()) {
String str = it.next();
param += "<" + str + ">";
param += params.get(str);
param += "</" + str + ">";
}
}
return param;
} public static String getMesage(String soapAttachment, String result) {
if (result == null) {
return null;
}
if (soapAttachment != null && soapAttachment.length() > 0) {
int begin = soapAttachment.indexOf("<return>");
begin = soapAttachment.indexOf(">", begin);
int end = soapAttachment.indexOf("</return>");
String str = soapAttachment.substring(begin + 1, end);
str = str.replaceAll("<", "<");
str = str.replaceAll(">", ">");
return str;
} else {
return "";
}
} /**
* @param args
*/
public static void main(String[] args) {
try { Date useDate = new Date();
SimpleDateFormat format0 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String beginDate = format0.format(useDate);
String endDate = format0.format(useDate);
List list = new ArrayList();
list.add(SecurityUtil.getHcmKey("BDMSigner", "yhn@BDM123", "mix@CODE"));
list.add("TB_ORG_POSITION");
list.add(beginDate);
list.add(endDate);
list.add("1");
String wsdl = "http://testhcm.ycgwl.com:8070/hcm/service/MDMWebService";
String ns = "http://service.info.employee.staffing.talentbase.neusoft.com/";
String method = "getHrInfo";
String response = accessService(wsdl, ns, method, list, "result"); } catch (Exception e) {
e.printStackTrace();
}
} }

httpclient调用webservice接口的方法实例的更多相关文章

  1. Java之HttpClient调用WebService接口发送短信源码实战

    摘要 Java之HttpClient调用WebService接口发送短信源码实战 一:接口文档 二:WSDL 三:HttpClient方法 HttpClient方法一 HttpClient方法二 Ht ...

  2. Java 常调用的Webservice接口的方法

    WebService是基于Web的服务,WebService使用SOAP协议实现跨编程语言和跨操作系统平台,接收和响应外部系统的某种请求,从而实现远程调用.WebService采用HTTP协议传输数据 ...

  3. Java调用webservice接口方法

                             java调用webservice接口   webservice的 发布一般都是使用WSDL(web service descriptive langu ...

  4. cxf 和 httpclient 客户端调用 webservice 接口

    一.cxf 生成 webservice 客户端 1.接口路径 http://ws.webxml.com.cn/WebServices/WeatherWS.asmx 2.进入你需要放置 webservi ...

  5. php中创建和调用webservice接口示例

    php中创建和调用webservice接口示例   这篇文章主要介绍了php中创建和调用webservice接口示例,包括webservice基本知识.webservice服务端例子.webservi ...

  6. java 调用webservice的各种方法总结

    java 调用webservice的各种方法总结 几种流行的开源WebService框架Axis1,Axis2,Xfire,CXF,JWS比较 方法一:创建基于JAX-WS的webservice(包括 ...

  7. js调用Webservice接口案例

    第一步:新建Webservice接口 主文件方法 using System;using System.Collections.Generic;using System.Web;using System ...

  8. SQL调用WebService接口

    今天在做一个非常奇葩的东西.中间有个过程要在SQL触发器里面调用webservice接口.呵呵~ ALTER TRIGGER tgr_UpdateMemcached ON dbo.[User] AFT ...

  9. 动态调用WebService接口的几种方式

    一.什么是WebService? 这里就不再赘述了,想要了解的====>传送门 二.为什么要动态调用WebService接口? 一般在C#开发中调用webService服务中的接口都是通过引用过 ...

随机推荐

  1. Math Show CodeForces - 846B

    题目 题意: 有n个任务,每个任务有k个子任务,有m的时间来完成任务.每个任务的第i个子任务需要时间都是ti.完成一个子任务获得一分,完成一个大任务的所有子任务额外得一分.问如何在时间不超过m的情况下 ...

  2. 479 Largest Palindrome Product 最大回文数乘积

    你需要找到由两个 n 位数的乘积组成的最大回文数.由于结果会很大,你只需返回最大回文数 mod 1337得到的结果.示例:输入: 2输出: 987解释: 99 x 91 = 9009, 9009 % ...

  3. DNS递归查询、主从、加密认证、负载均衡

    环境同DNS练习之正向解析. 在sishen64主机上安装必要软件 [root@sishen64 ~]# yum install -y bind bind-chroot bind-libs bind- ...

  4. spring boot druid mybatis多数据源

    一.关闭数据源自动配置(很关键) @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class }) 如果不关闭会报异常:o ...

  5. 新手玩CSS中的一些黑科技

    哎哎 1.鼠标移进网页里,不见了= = *{ cursor: none!important; } 2.简单的文字模糊效果 *{ color: transparent; text-shadow: #11 ...

  6. 8 Explicit Animations 指明的动画 笔记

    8 Explicit Animations 指明的动画 笔记     If you want something done right, do it yourself. 如果你想让事情做好,那就自动来 ...

  7. COGS 886. [USACO 4.2] 完美的牛栏

    ★★☆   输入文件:stall4.in   输出文件:stall4.out   简单对比时间限制:1 s   内存限制:128 MB USACO/stall4(译by Felicia Crazy) ...

  8. (转)Spring的概述

    http://blog.csdn.net/yerenyuan_pku/article/details/69663685 Spring的概述 什么是Spring 据度娘所载: Spring是一个开源框架 ...

  9. PHP安全之 register_globals

    一.register_globals = Off 和 register_globals = On的区别 register_globals是php.ini里的一个配置,这个配置影响到php如何接收传递过 ...

  10. 和为S

    2518 和为S 2 秒 262,144 KB 10 分 2 级题   小b有一个01序列A,她想知道A有多少个非空连续子序列和为S. 你能帮帮她吗? 收起   输入 第一行输入一个数n,表示A的长度 ...