vickzhu

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  151 随笔 :: 0 文章 :: 34 评论 :: 0 Trackbacks
        最近我们公司的jsp网站要和另一家公司的asp网站做通讯,之间通过xml传递信息
        现假如我们公司是A,对方公司是B,如果A发送一条信息给B,B必须反馈一条信息表示是否执行成功。这里有两种模式可以使用,
    第一:A、B把对方都当做服务器进行消息发送
    第二:A相当于浏览器、B相当于服务器,A发送一个消息给B,B直接返回给A信息。
    下面我们来看看这两种方式分别怎么实现?
    第一种:
        1、A(a.jsp)的代码:
        StringBuffer sb=new StringBuffer("<?xml version=\"1.0\" encoding=\"GBK\"?>");
        sb.append("<User>");
        sb.append("<HEAD>");
        sb.append("<SUCCESS></SUCCESS>");
        sb.append("</HEAD>");
        sb.append("<BODY>");
        sb.append("<MOBILE></MOBILE>");
        sb.append("<NAME></NAME>");
        sb.append("<SEX></SEX>");
        sb.append("</BODY>");
        sb.append("</User>");
        URL url = new URL("B服务器的接收路径");
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestProperty("Content-Type", "text/xml;charset=gbk");
        conn.setRequestMethod("POST");
        conn.setRequestProperty("Content-Length", String.valueOf(xml.length()));
        conn.setConnectTimeout(5000);
        conn.setDoOutput(true);
        OutputStream os = conn.getOutputStream();
        os.write(sb.toString().getBytes());
        os.flush();
        os.close();
        2、B服务器接收到A的请求后,也以类似于1(当然asp中的代码我不知道怎么写)将反馈信息发送到A的指定路径(b.jsp)
        3、A(b.jsp)接收B的反馈信息:
            InputStream is=request.getInputStream();
    第二种:
        1、A(a.jsp)的代码
            StringBuffer sb=new StringBuffer("<?xml version=\"1.0\" encoding=\"GBK\"?>");
            sb.append("<User>");
            sb.append("<HEAD>");
            sb.append("<SUCCESS></SUCCESS>");
            sb.append("</HEAD>");
            sb.append("<BODY>");
            sb.append("<MOBILE></MOBILE>");
            sb.append("<NAME></NAME>");
            sb.append("<SEX></SEX>");
            sb.append("</BODY>");
            sb.append("</User>");
            URL url = new URL("B服务器的接收路径");
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestProperty("Content-Type", "text/xml;charset=gbk");
            conn.setRequestMethod("POST");
            conn.setRequestProperty("Content-Length", String.valueOf(xml.length()));
            conn.setConnectTimeout(5000);
            conn.setDoOutput(true);
            OutputStream os = conn.getOutputStream();
            os.write(sb.toString().getBytes());
            os.flush();
            os.close();
        2、B接收到A(a.jsp)服务器的代码后用
                byte[] byts = new byte[Request.InputStream.Length];
             Request.InputStream.Read(byts,
0,byts.Length);
                
然后用Response.OutputStream.write()返回信息
        3、A(a.jsp)接收B服务器的反馈信息(和1的代码同在a.jsp中,并且就接着1代码的后面)
               if(conn.getResponseCode()==200){
                   String line=null;
                   String body="";
                   is = conn.getInputStream();
                   BufferedReader br = new BufferedReader(new InputStreamReader(is));
                   while ((line = br.readLine()) != null) {
                        body += line;
                   }
                   conn.disconnect();
              }
        其中访问一个页面主要用到了HttpURLConnection这个类,当然还有其它几种方式可以使用,具体请参见我的文章http://www.blogjava.net/vickzhu/archive/2008/11/12/240013.html
posted on 2009-01-04 14:57 筱 筱 阅读(1043) 评论(1)  编辑  收藏

评论

# re: java 发送 xml 流 2010-09-14 20:32 xml初学
好!  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: