Linux安全网 - Linux操作系统_Linux 命令_Linux教程_Linux黑客

会员投稿 投稿指南 本期推荐:
搜索:
您的位置: Linux安全网 > Linux集群 > Architecture > » 正文

不同系统报文对接的一些简单讲解

来源: uuubd 分享至:
公司最近和别的公司对接接口。大概看了以前的,都用的是axis的webservice调用对方给定的wsdl,你只要给定参数就可以访问。而这次给的却是一个url。开始还一直不明白咋回事,后来发现是思维固化,人家给的就是一个URL请求路径。也是只要传递参数,然后接受返回数据就完事。一下就想到使用网络编程技术就完事了。
下面是一个简单的例子演示场景。
对应的包结构:


首先简单写个servlet:
package date2011_11_14; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class web extends HttpServlet{ //doGet方法 public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //获得传递过来的name,age值 String name = req.getParameter("name"); String age = req.getParameter("age"); //控制台输出 System.out.println("doGet method is called!"); System.out.println("name-->" + name + " age-->" + age); //返回数据 PrintWriter out = resp.getWriter(); out.println("doGet method is called!"); out.println("name-->" + name + " age-->" + age); out.close(); } //doPost方法 public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //获得传递过来的name,age值 String name = req.getParameter("name"); String age = req.getParameter("age"); //控制台输出 System.out.println("doPost method is called!"); System.out.println("name-->" + name + " age-->" + age); //返回数据 PrintWriter out = resp.getWriter(); out.println("doPost method is called!"); out.println("name-->" + name + " age-->" + age); out.close(); } }

其web.xml配置如下:
<?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <servlet> <servlet-name>URLtest</servlet-name> <servlet-class>date2011_11_14.web</servlet-class> </servlet> <servlet-mapping> <servlet-name>URLtest</servlet-name> <url-pattern>/test</url-pattern> </servlet-mapping> </web-app>

完成servlet后,启动服务器。
接下来我们写个测试类,如下:
package date2011_11_14; import java.net.*; import java.io.*; public class URLtest { public static void main(String[] args) throws Exception { //此路径就是调用servlet的路径,在web.xml中有配置 String url = "http://localhost:8080/blog/test"; //使用GET方式访问 doGet(url + "?name=TOM&age=11"); System.out.println("***************"); //使用POST方式访问 doPost(url); } public static void doGet(String testURL) throws Exception{ URL url = new URL(testURL); HttpURLConnection con = (HttpURLConnection) url.openConnection(); //实际默认情况下就是GET方式,只是让大家知道是GET方式调用,这里可以不写这行, con.setRequestMethod("GET"); //如果这里使用con.getOutputStream则前面设置的GET无效,转为POST。所有如果只想使用GET方式,则下面5行都不写。 InputStream is = con.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); //输出返回信息 String s; while((s = br.readLine()) != null){ System.out.println(s); } br.close(); } public static void doPost(String testURL) throws Exception{ URL url = new URL(testURL); HttpURLConnection con = (HttpURLConnection) url.openConnection(); //如果是post传输,需设置doOutput为true con.setDoOutput(true); //设置不用缓存 con.setUseCaches(false); //默认情况下就是GET方式 con.setRequestMethod("POST"); //如果使用下面OutputStream则前面设置的GET无效,转为POST。所有如果只想使用GET方式,则下面5行都不写。 OutputStream os = con.getOutputStream(); //传递参数 String content = "name=TOM&age=11"; PrintWriter pw = new PrintWriter(os); pw.print(content); pw.close(); InputStream is = con.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); //输出返回信息 String s; while((s = br.readLine()) != null){ System.out.println(s); } br.close(); } }

写完后运行即可,这时候,服务器段控制台输出如下: doGet method is called! name-->TOM age-->11 doPost method is called! name-->TOM age-->11 而测试类控制台输出如下: doGet method is called! name-->TOM age-->11 *************** doPost method is called! name-->TOM age-->11


使用这个可以在自己的servlet中调用别人给的接口路径的servlet,完成对接工作。

如果给的是一个wsdl,可以使用axis2,这里就不细说了。网上一大堆,都差不多相互粘贴。这里给个地址自己看吧。

http://wenku.baidu.com/view/ddc950d226fff705cc170aeb.html
  • 大小: 7.7 KB
  • 查看图片附件

Tags:
分享至:
最新图文资讯
1 2 3 4 5 6
验证码:点击我更换图片 理智评论文明上网,拒绝恶意谩骂 用户名:
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 发展历史