JavaWeb 调用接口
JavaWeb 如何调用接口
CreateTime--2018年4月2日19:04:29
Author:Marydon
1.所需jar包
2.代码设计
WebUtils.java
import java.io.ByteArrayOutputStream;
import java.net.URL; import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult; import org.codehaus.xfire.client.Client; /**
*
* @author Marydon
* @createTime 2018年3月9日上午10:40:01
* @updateTime
* @Email:Marydon20170307@163.com
* @version:1.0.0
*/
public class WebUtils { /**
* 接口调用方法 内部使用xfire 调用
* @param param1
* 接口传参
* @param methodName
* 调用接口方法名
* @param url
* 调用接口地址
* @return String 返回结果
*/
public static String call(Object[] param1, String methodName, String url) {
// 调用接口
if (null == url) {
throw new RuntimeException("接口地址不能为空!");
}
if (!url.endsWith("?wsdl")) {
url += "?wsdl";
}
// 接口名称
String intefaceName = methodName;
// 客户端
Client client;
Object[] results;
try {
client = new Client(new URL(url));
results = client.invoke(intefaceName, param1);
if (results != null && results.length > 0) {
if (results[0] instanceof String) {
return (String) results[0];
} else if (results[0] instanceof org.w3c.dom.Document) {
org.w3c.dom.Document doc = (org.w3c.dom.Document) results[0];
return WebUtils.w3cDocument2String(doc);
} else {
if (results.length > 1) {
System.err.println("返回结果长度:" + results.length);
}
return String.valueOf(results[0]);
}
}
} catch (Exception e) {
// log.error("调用接口失败"+url+":"+methodname,e);
}
return null;
} /**
* 将w3c定义的Document对象转换为String字符串
*
* @param doc
* @return
* @throws Exception
*/
public static String w3cDocument2String(org.w3c.dom.Document doc) {
// 设置源和目标
DOMSource src = new DOMSource(doc);
StreamResult sos;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
try {
sos = new StreamResult(bos);
// 转换器
Transformer t = TransformerFactory.newInstance().newTransformer();
t.transform(src, sos);
return bos.toString("UTF-8");
} catch (Exception e) {
e.printStackTrace();
}
return null; } }
3.测试
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element; /**
* 发送webservice请求测试类
* @author Marydon
* @createTime 2018年3月9日上午10:51:07
* @updateTime
* @Email:Marydon20170307@163.com
* @version:1.0.0
*/
public class Test { /**
* @param args
*/
public static void main(String[] args) {
String url = "http://127.0.0.1:8070/demo/services/IServiceTest?wsdl";
// 必须指定方法名
String methodName = "getUserInfo"; StringBuilder sb = new StringBuilder();
sb.append("<Request><userId>2</userId></Request>"); Document document = DocumentHelper.createDocument(); // 创建Document document 以xml的格式存放返回参数
Element request = document.addElement("Request"); // 在 document中 新建一个Request节点
// (具体节点请参考接口文档)
request.addElement("userId").setText("1");
// TODO 发送空id
// request.addElement("id").setText("");
String data = document.asXML().toString();// 以xml格式进行传输 String res = WebUtils.call(new Object[] { data }, methodName, url);
System.out.println(res);
Document dhead;
try {
dhead = DocumentHelper.parseText(res);
String userName = dhead.selectSingleNode("//Response/userName").getText().trim();
System.out.println(userName);
} catch (DocumentException e) {
e.printStackTrace();
} } }
4.说明
以接口的形式进行传输时,"&"是特殊符号,不能直接传,必须转义成"&",否则报错。
JavaWeb 调用接口的更多相关文章
- C#怎样通过url调用接口
在做一些项目过程中,我们常常总避免不了要调用接口,那么怎么通过url调用借口呢.我今天浅显的写一下. 首先要获取你访问链接的App Key 和 App Secret 那么什么是App Key 和 Ap ...
- C#动态webservice调用接口 (JAVA,C#)
C#动态webservice调用接口 using System; using System.Collections; using System.IO; using System.Net; using ...
- 在网页程序或Java程序中调用接口实现短信猫收发短信的解决方案
方案特点: 在网页程序或Java程序中调用接口实现短信猫收发短信的解决方案,简化软件开发流程,减少各应用系统相同模块的重复开发工作,提高系统稳定性和可靠性. 基于HTTP协议的开发接口 使用特点在网页 ...
- WPS Office手机版调用接口代码指导帖之一(Android)
经常会有一些喜欢开发鼓捣的童鞋问我们,WPS Office手机版是否提供调用接口,希望在android中使用一个调用命令,直接调用WPS手机版来打开指定的DOC文件,而不用弹出一个程序可选列表(如果用 ...
- 微信开放平台 公众号第三方平台开发 教程四 代公众号调用接口的SDK和demo
原文:微信开放平台 公众号第三方平台开发 教程四 代公众号调用接口的SDK和demo 教程导航: 微信开放平台 公众号第三方平台开发 教程一 平台介绍 微信开放平台 公众号第三方平台开发 教程二 创建 ...
- json格式数据,将数据库中查询的结果转换为json, 然后调用接口的方式返回json(方式一)
调用接口,无非也就是打开链接 读取流 将结果以流的形式输出 将查询结果以json返回,无非就是将查询到的结果转换成jsonObject ================================ ...
- URLConnection调用接口
写在前面: 项目是java web,jdk1.4,weblogic 7;对方.net系统,用wcf开发的接口.对方提供接口url地址,以及说明用post方式去调用,无需传递参数,直接返回json ar ...
- java如何调用接口方式二
java如何调用接口 在实际开发过程中,我们经常需要调用对方提供的接口或测试自己写的接口是否合适,所以,问题来了,java如何调用接口?很多项目都会封装规定好本身项目的接口规范,所以大多数需要去调用对 ...
- java如何调用接口方式一
java如何调用接口 其实对于java调用接口进行获取对方服务器的数据在开发中特别常见,然而一些常用的基础的知识总是掌握不牢,让人容易忘记,写下来闲的时候看看,比回想总会好一些. 总体而言,一些东西知 ...
随机推荐
- 【8.23校内测试】【贪心】【线段树优化DP】
$m$的数据范围看起来非常有问题??仔细多列几个例子可以发现,在$m<=5$的时候,只要找到有两行状态按位$&$起来等于$0$,就是可行方案,如果没有就不行. #include<i ...
- 在windows上安装和启动Elasticseach、Kibana
写在前面的话:读书破万卷,编码如有神-------------------------------------------------------------------- 参考内容: <Ela ...
- Codeforces Round #348 (VK Cup 2016 Round 2, Div. 2 Edition) D. Little Artem and Dance 模拟
D. Little Artem and Dance 题目连接: http://www.codeforces.com/contest/669/problem/D Description Little A ...
- 对于GTPv1协议头部的解析
参考ETSI EN 301 347 GTP是GPRS Tunnelling Protocol 的简称.GTP分为GTPv0(已经淘汰),GTPv1 和GTPv2.下面,介绍的是GTPv1. GTPv1 ...
- hihocoder 1523:数组重排2
题目链接 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定一个1-N的排列A1, A2, ... AN,每次操作小Hi可以选择一个数,把它放到数组的最左边. 请计算小 ...
- 取maven copy部分
mvn deploy:deploy-file -DgroupId=com.mycompany -DartifactId=my-project -Dversion=1.0.0 -Dpackaging=j ...
- 介绍:一款Mathematica的替代开源软件Mathetics
Mathetics软件 1 以Python语言实现该系统 2 软件使用的语法与Mathematica同样 3 下载:http://www.mathics.org/ 4 手冊:http://www.ma ...
- linux下printf打印带颜色的字符串
转载:http://blog.chinaunix.net/uid-28917424-id-3889917.html 前不久就在某位同学的博客里看到,但是今天找了好久没找到,就直接google了,现贴出 ...
- 借助Maven为项目划分development,test,production环境
原文地址:http://melin.iteye.com/blog/1339060 很早学习rails的时候,rails在服务器启动的时候,通过参数可以切换不同运行环境.也许spring从rails吸取 ...
- 浏览器User-Agent的详细信息
PC端: safari 5.1 – MACUser-Agent:Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit ...