httpclient发送xml字符串(推送)

public static void main(String[] args) {
String xml = "<?xml version="
+ "\"1.0\""
+ " encoding="
+ "\"UTF-8\""
+ "?><SDRequest><TransactionName>CreateDataFileComplete</TransactionName><IdentityInfo><Code>"
+ 1 + "</Code><Description></Description><Timestamp>"
+ "20100315140542" + "</Timestamp></IdentityInfo></SDRequest>";//新接的一个项目接口,非要用xml请求,找不到别的post方式,最终选用这种方式,将参数拼成xml字符串

// File input = new File("test.xml");//如果是xml文件,可以这样写
PostMethod post = new PostMethod("http://localhost/site/forXls.do");//请求地址

// 设置请求的内容直接从文件中读取
   //   post.setRequestBody( new FileInputStream(input)); 
     // if (input.length() < Integer.MAX_VALUE)
     //    post.setRequestContentLength(input.length());
    //  else
     //  post.setRequestContentLength(EntityEnclosingMethod.CONTENT_LENGTH_CHUNKED);

post.setRequestBody(xml);//这里添加xml字符串

// 指定请求内容的类型
post.setRequestHeader("Content-type", "text/xml; charset=GBK");
HttpClient httpclient = new HttpClient();//创建 HttpClient 的实例
int result;
try {
result = httpclient.executeMethod(post);
System.out.println("Response status code: " + result);//返回200为成功
System.out.println("Response body: ");
System.out.println(post.getResponseBodyAsString());//返回的内容
post.releaseConnection();//释放连接
} catch (HttpException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

//以上就是发送请求的代码,对方接收到数据可以直接解析成xml

Document airDocument = getClientRequestMessage(request);
System.out.println(airDocument.getRootElement().getName());
if ((XmlInterfaceParam.SD_REQUEST).equals(airDocument.getRootElement()
.getName())) {
Element tn = airDocument.getRootElement().getChild(
XmlInterfaceParam.TRANSACTION_NAME);
if ("CreateDataFileComplete".equals(tn.getText())) {
Element ii = airDocument.getRootElement().getChild(
XmlInterfaceParam.IDENTITY_INFO);
String code = ii.getChildText(XmlInterfaceParam.CODE);
String description = ii
.getChildText(XmlInterfaceParam.DESCRIPTION);
String timestamp = ii.getChildText(XmlInterfaceParam.TIMESTAMP);
System.out.println("code: " + code);
System.out.println("description: " + description);
System.out.println("timestamp: " + timestamp);
}
}

// 读取xml
private Document getClientRequestMessage(HttpServletRequest _request)
throws UnexpectedException {
try {
SAXBuilder builder = new SAXBuilder();
InputSource is = new InputSource(); // create an input
// source
is.setByteStream(_request.getInputStream()); // set the input
// stream mandated
// to UTF-8
is.setEncoding("UTF-8"); // set the mandate
// encoding to the input
// source
Document document = builder.build(is);
return document;
} catch (IOException e) {
e.printStackTrace();
throw new UnexpectedException(
"IOException exception when getInputStream from http request",
e);
} catch (JDOMException e) {
e.printStackTrace();
throw new UnexpectedException(
"JDOMException when build document form inputstream", e);
} catch (NullPointerException e) {
e.printStackTrace();
throw new UnexpectedException(
"NullPointerException when build document form inputstream",
e);
} catch (ClassCastException e) {
e.printStackTrace();
throw new UnexpectedException(
"ClassCastException when build document form inputstream",
e);
}
}

时间: 2024-10-05 00:49:45

httpclient发送xml字符串(推送)的相关文章

使用极光推送实现分组发送和服务端集成

推送功能在手机应用开发中越来越重要,几乎成为所有App必备的功能,由于Android本身没有消息推送机制,通常采用的是基于XMPP协议的推送,但这种开发很麻烦,因此在市场上应运而生了提供消息推送服务的诸多产品,例如:百度云.个推.极光等. 极光推送正是一个整合了Android推送.iOS推送的统一推送服务平台.下面讲解一下如何使用极光实现消息推送应用,并重点讲解一下如何实现向分组发送消息及推送服务端和自身应用集成,具体实现过程如下: 目录: 一.注册应用 二.环境搭建 三.Android开发,实

android极光推送初步了解...

推送可以及时,主动的与用户发起交互 (1)继承jar包,照示例AndroidManifest.xml添加. (2)自定义MyApp继承自Application,在onCreate方法中调用JPushInterface.init(MainActivity.this); 或者在Activity的onCreate中调用. (3)另外,在activity的onResume方法要调用JPushInterface.onResume(this);否则,推送不会出现, 在onPause中调用JPushInter

wp推送消息笔记

最近想给应用添加推送消息,主要是toast消息,所以就打算去了解一下wp消息推送机制以及实现方法,过程中,查了许多资料,也遇到过一些问题,做完后,自己就做个小笔记,总结一下,好记性不如烂笔头嘛,以后可以回头看看,也方便多了,废话不多说! wp消息推送机制 用一幅图说明,因为官方是英文的,自己在上面添加了一些中文的解析上去,方便大家去理解! 这幅图的核心内容是,当你的应用请求手机Uri(注意:这里uri相当于一个ip或者一个物理地址,是唯一性的一个标识),手机的客户端服务会与微软推送中心联系,然后

关于极光推送Jpush的demo

关于极光推送Jpush 推送是手机app必不可少的一样功能,这次由于公司项目需要研究了一下.由于推送一般写于服务端,所以对于不会Android的javaweb程序员要写出一个完整的demo是一件很头痛的事情.所以我就在这里从头到尾写一个例子以示参考.由于我也不懂Android 只是由于项目需要百度了一个demo,当中有很多不足的地方忘各位大神指正. 一.首先先简单的介绍一下什么是极光推送 ①为什么需要推送:为了解决数据同步的问题,在手机平台上,常用的方法有2种.一种是定时去服务器上查询数据,也叫

苹果推送通知服务APNs编程(转)

add by zhj: 下面的几篇文章也非常好, http://www.raywenderlich.com/32960/apple-push-notification-services-in-ios-6-tutorial-part-1 http://www.raywenderlich.com/32963/apple-push-notification-services-in-ios-6-tutorial-part-2 http://blog.csdn.net/chenglibin1988/art

细说 iOS 消息推送

APNS的推送机制 与Android上我们自己实现的推送服务不一样,Apple对设备的控制很严格.消息推送的流程必需要经过APNs: 这里 Provider 是指某个应用的Developer,当然假设开发人员使用AVOS Cloud的服务,把发送消息的请求托付给我们,那么这里的Provider就是AVOS Cloud的推送服务程序了. 上图能够分为三步: 第一步:AVOS Cloud推送服务程序把要发送的消息.目的设备的唯一标识打包,发给APNs. 第二步:APNs在自身的已注冊Push服务的应

Java+Flex+Blaze推送

在上篇Flex+Java+Blazeds 建立了项目的基础上,实现Flex订阅,Java发送消息的推送功能. 一.运行环境:Flex4.6+Jdk1.7+Blazedz某版本+Tomcat6 此处注意,使用的服务器是Tomcat6,如果使用Tomcat7还存在问题,不能实现推送,在网上查过此问题,有人说换Blazeds4版本可以实现,尝试过没有实现,尚待解决. 二.代码 1.Java端 (1)新建类Person,用于前后台传输数据 package com.java; public class P

springboot实现服务器端消息推送(websocket + sockjs + stomp)

服务器端推送技术在web开发中比较常用,可能早期很多人的解决方案是采用ajax向服务器轮询消息,这种方式的轮询频率不好控制,所以大大增加了服务器的压力,后来有了下面的方案:当客户端向服务器发送请求时,服务器端会抓住这个请求不放,等有数据更新的时候才返回给客户端,当客户端接收到数据后再次发送请求,周而复始,这样就大大减少了请求次数,减轻了服务器的压力,当前主要有SSE(Server Send Event 服务器端事件发送)的服务器端推送和基于Servlet3.0+异步方法特性实现的服务器端推送.而

远程推送

远程推送的原理图 一.工程前的准备 1.1下载SDK,拖进工程 1.2Building Phases下添加以下 在AppDelegate.m引入#import "XGPush.h" - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after a