通过http请求传递xml流和接收xml流的代码示例

//1.在servlet中post一个xml流:
import java.io.OutputStreamWriter;
import org.jdom.Document;
import org.jdom.Document;

public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
//do somthing...
response.setContentType("application/xml");
Document doc = createDoc();
    String strdoc = new XMLOutputter().outputString(doc);
    OutputStreamWriter out = new OutputStreamWriter(response
      .getOutputStream(), "UTF-8");
    out.write(strdoc);
    out.flush();
    out.close();
//do somthing...
}

/***
*将要封装的数据,封装为xml文件的Document格式
*/
public Document createDoc() {
   Document doc = null;
   Element root;
   Element viewentry;
   Element entry;
   List list = getData();
   try {
    XMLOutputter docWriter = new XMLOutputter(" ", true);
    docWriter.setEncoding("UTF-8");
    root = new Element("your_element_name");
    doc = new Document(root);
    root = doc.getRootElement();
    if (list == null || list.size() == 0) {
     return doc;
    }
    Iterator it = list.iterator();
    while (it.hasNext()) {
     Map colMap = (Map) it.next();

viewentry = new Element("document");
     entry = new Element("author");
     entry.setText(colMap.get("userid").toString());
     viewentry.addContent(entry);

//do other entry in this way
     root.addContent(viewentry);
    }
   } catch (Exception e) {
    e.printStackTrace();
   }
   return doc;
}

//2.根据接收的url,从其中获取xml流生成xml文件
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader;

import sun.net.www.protocol.http.HttpURLConnection;

public static Document getDocument(String url){
  
   Document doc = null;
   HttpURLConnection conn = null;
   InputStream ins = null;
   SAXReader reader = null;
   try{
    HttpTimeoutHandler hth = new HttpTimeoutHandler(600000);
    URL conURL = new URL(null,url,hth);
    conn = (HttpURLConnection)conURL.openConnection();
    conn.setDoInput(true);
    conn.setDoOutput(true);
    conn.setUseCaches(false);
    ins = conn.getInputStream();
    reader =new SAXReader();
    doc= reader.read(ins);
    ins.close();
    conn.disconnect();
   }catch (MalformedURLException e) {
    e.printStackTrace();
   } catch (IOException e) {
    e.printStackTrace();   
   } catch (DocumentException e) {
    e.printStackTrace();
   }catch(Exception e){
    e.printStackTrace();
   }finally {
    try {
     if (ins != null) {
      ins.close();
      ins = null;
     }
    } catch (IOException e1) {
     e1.printStackTrace();
    }
    try {
     if (conn != null) {
      conn.disconnect();
      conn = null;
     }
    } catch (Exception e2) {
     e2.printStackTrace();
    }
   }
   return doc;
}

3.//处理url超时限制
/***
HttpTimeoutHandler.java
*/
import java.net.*;
import java.io.IOException;

public class HttpTimeoutHandler extends sun.net.www.protocol.http.Handler {
int intTimeoutVal;
HttpURLConnectionTimeout fHUCT;

public HttpTimeoutHandler(int iT) {
   intTimeoutVal = iT;
}

protected java.net.URLConnection openConnection(URL u) throws IOException {
   return fHUCT = new HttpURLConnectionTimeout(u, this, intTimeoutVal);
}

String GetProxy() {
   return proxy;
} // breaking encapsulation

int GetProxyPort() {
   return proxyPort;
} // breaking encapsulation

public void Close() throws Exception {
   fHUCT.Close();
}

public Socket GetSocket() {
   return fHUCT.GetSocket();
}
}

通过http请求传递xml流和接收xml流的代码示例的更多相关文章

  1. 使用postman进行post请求传递中文导致后台接收乱码的问题

    1.个人猜测估计是如果header里不指明编码的话,经过tomcat服务器时会导致转换乱码信息,这样就算你在filter里配置了EncodingFilter相关的过滤器也无济于事.. 解决方法就是在h ...

  2. rabbitmq AmqpClient 使用Direct 交换机投递与接收消息,C++代码示例

    // 以DIRECT 交换机和ROUTING_KEY的方式进行消息的发布与订阅 // send // strUri = "amqp://guest:guest@192.168.30.11:8 ...

  3. rabbitmq AmqpClient 使用Topic 交换机投递与接收消息,C++代码示例

    // strUri = "amqp://guest:guest@192.168.30.11:8820/test" // strUri = "amqp://[帐户名]:[密 ...

  4. rabbitmq AmqpClient 使用Fanout 交换机投递与接收消息,C++代码示例

    fanout交换器重点内容非常简单.它只会将接收到的所有消息广播发送到它所知道的所有队列. 投递消息到交换机: #include "SimpleAmqpClient/SimpleAmqpCl ...

  5. .net webapi 接收 xml 格式数据的三种情况

    webapi 接收 xml 的三种方法 前段时间接到一个任务写一个小接口,要接收java端返回过来的短信xml数据. 刚拿到项目,我的第一想法是对方会以什么形式发送xml格式的数据给我呢,设想三种情况 ...

  6. 【struts2】struts2中的流接收与流发送

    [前言]在我们的struts2后端中,实现流的接收和发送.就能够实现向server传视频流以及下载图片. [流接收] 如今举一个传公钥的样例.struts2用一个action接收Key,而Key就是用 ...

  7. PHP通过XML报文格式的POST请求方式,与第三方接口交互(发送xml,获取XML,并解析xml步骤)

    开发者端:发送请求,并接收结果 <?php // 下面的demo,实现的功能如下: // 1-开发者需要判断一个用户是否存在,去请求第三方接口. // 2-与第三方接口的通信,是以xml格式传送 ...

  8. Ajax请求传递参数遇到的问题

    想写个同类型的,代码未测. 什么是WebAPI?我的理解是WebAPI+JQuery(前端)基本上能完成Web MVC的功能,即:这么理解吧,WebAPI相当于Web MVC的后台部分. 接下来直接上 ...

  9. WebAPI学习日记一:Ajax请求传递参数遇到的问题

    首先,本人大学刚毕业,想把自己学习的一些东西记录下来,也是和大家分享,如有不对之处还请多加指正.声明:但凡是我博客里的文章均是本人实际操作遇到的例子,不会随便从网上拷贝或者转载,本着对自己和观众负责的 ...

随机推荐

  1. 在oracle中varchar和varchar2有什么区别?

    1.varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符占两字节,数字,英文字符等都是一个字节:2.VARCHAR2把空串等同于null处理,而varchar仍按 ...

  2. OnClickListener接口

    package com.example.wang.testapp2; import android.support.v7.app.AppCompatActivity; import android.o ...

  3. mysql 闪回测试

    由于前面出现过几个需求,或者误操作,或者测试,需要我把某张表恢复到操作之前的一个状态,前面在生产中有过几次经历,实在太痛苦了,下面是一张表被误删除了,我的步骤是: 1  用全备恢复整个库(恢复到其他环 ...

  4. USACO 完结的一些感想

    其实日期没有那么近啦……只是我偶尔还点进去造成的,导致我没有每一章刷完的纪念日了 但是全刷完是今天啦 讲真,题很锻炼思维能力,USACO保持着一贯猎奇的题目描述,以及尽量不用高级算法就完成的题解……例 ...

  5. Educational Codeforces Round 9 D - Longest Subsequence

    D - Longest Subsequence 思路:枚举lcm, 每个lcm的答案只能由他的因子获得,类似素数筛搞一下. #include<bits/stdc++.h> #define ...

  6. Mysql Window 下安装

    http://blog.csdn.net/u013235478/article/details/50623693

  7. 在Ubuntu18.04中QT编程的环境构建(转)

    在Ubuntu18.04中QT编程的环境构建 原点分析 百家号06-2110:14 如果说QT大家觉得陌生的话,那么 Windows 早年推出的C++图形用户界面的应用程序开发框架MFC,应该是耳熟能 ...

  8. Category 特性在 iOS 组件化中的应用与管控

    背景 iOS Category功能简介 Category 是 Objective-C 2.0之后添加的语言特性. Category 就是对装饰模式的一种具体实现.它的主要作用是在不改变原有类的前提下, ...

  9. tkinter-clock实例

    模仿着前辈的脚步,画了个临时的时钟显示: 代码如下: # coding:utf-8 from tkinter import * import math,time global List global ...

  10. 【BZOJ 2986】 莫比乌斯函数+容斥原理

    2986: Non-Squarefree Numbers Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 337  Solved: 156 Descri ...