首页 技术 正文
技术 2022年11月21日
0 收藏 504 点赞 4,219 浏览 2982 个字

 

JavaWeb 如何调用接口

CreateTime–2018年4月2日19:04:29

Author:Marydon

1.所需jar包

JavaWeb 调用接口

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.说明

   以接口的形式进行传输时,”&”是特殊符号,不能直接传,必须转义成”&amp;”,否则报错。

相关推荐:

 

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,964
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,486
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,331
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,114
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,747
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,781