通过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. CentOS 7 安装Docker CE

    本节内容: 背景 Moby项目 安装Docker CE 卸载Docker CE 一.背景 在搭建Registry的过程中,发现使用Docker 1.12版本,在push镜像到Registry时会报错误 ...

  2. 【LOJ】#2722. 「NOI2018」情报中心

    https://loj.ac/problem/2722 题解 考场上想了60分,但是由于自己不知道在怎么zz,我连那个ai<bi都没看到,误以为出题人没给lca不相同的部分分,然后觉得lca不同 ...

  3. USACO 4.3 Buy Low, Buy Lower

    Buy Low, Buy Lower The advice to "buy low" is half the formula to success in the stock mar ...

  4. 成功实施的APS项目故事分享---如何管理与激励APS项目团队

    故事背景 A企业是易普优APS重要客户之一,是某行业的龙头企业:APS项目历时7个月顺利上线,十个月验收!通过易普优APS的顺利实施,建成了集团的精益计划管控运营平台,树立计划的权威与指挥棒作用,让物 ...

  5. Haproxy 开启日志记录

    CentOS 7上yum安装的Haproxy,默认没有记录日志.需要做一下配置才能记录日志.(不知道其他版本是否需要,已经忘记了)主要是用到了Haproxy,以前貌似没有这么麻烦,今天配置出了一些问题 ...

  6. Ubuntu16.04下HBase的安装与配置

    一.环境 os : Ubuntu 16.04 LTS 64bit jdk : 1.8.0_161 hadoop : mysql : hive : hbase: -hadoop2 安装HBase前,系统 ...

  7. TradingView 为 k 线柱添加标记

    看别人翻译的开发文档: 开发文档地址:https://zlq4863947.gitbooks.io/tradingview/ getMarks(symbolInfo, startDate, endDa ...

  8. Spark入门2(Spark简析)

    一.Spark核心概念-RDD RDD是弹性分布式数据集,一个RDD由多个partition构成,一个partition对应一个task.RDD的操作分为两种:Trasformation(把一个RDD ...

  9. Python下读取转换unicode的json格式

    转自: https://blog.csdn.net/felcon/article/details/38524317 JSON(JavaScript Object Notation) 是一种轻量级的数据 ...

  10. 机器学习之路:python 网格搜索 并行搜索 GridSearchCV 模型检验方法

    git:https://github.com/linyi0604/MachineLearning 如何确定一个模型应该使用哪种参数? k折交叉验证: 将样本分成k份 每次取其中一份做测试数据 其他做训 ...