用JAVA发送一个XML格式的HTTP请求

  1 import java.io.BufferedInputStream;
  2 import java.io.BufferedReader;
  3 import java.io.ByteArrayOutputStream;
  4 import java.io.IOException;
  5 import java.io.InputStream;
  6 import java.io.InputStreamReader;
  7 import java.io.OutputStreamWriter;
  8 import java.net.URI;
  9 import java.net.URL;
 10 import java.net.URLConnection;
 11
 12 import org.apache.commons.httpclient.HttpClient;
 13 import org.apache.commons.httpclient.HttpStatus;
 14 import org.apache.commons.httpclient.methods.PostMethod;
 15
 16 /**
 17  * 测试调用一些meeting第三方接口
 18  * @author Jack.Song
 19  */
 20 public class TestMeetingInterface {
 21
 22     /**
 23      * @param args
 24      */
 25     public static void main(String[] args) {
 26
 27         String url = "http://192.168.0.68/integration/xml";
 28         TestMeetingInterface tmi = new TestMeetingInterface();
 29         System.out.println(tmi.post(url,"listSummaryMeeting.xml"));
 30
 31         /*//判断当前系统是否支持Java AWT Desktop扩展
 32         if(java.awt.Desktop.isDesktopSupported()){
 33             try {
 34                 URI path = tmi.getClass().getResource("/listSummaryMeeting.xml").toURI();
 35                 System.out.println(path);
 36                 //创建一个URI实例
 37 //              java.net.URI uri = java.net.URI.create(path);
 38                 //获取当前系统桌面扩展
 39                 java.awt.Desktop dp = java.awt.Desktop.getDesktop();
 40                 //判断系统桌面是否支持要执行的功能
 41                 if(dp.isSupported(java.awt.Desktop.Action.BROWSE)){
 42                     //获取系统默认浏览器打开链接
 43                     dp.browse(path);
 44                 }
 45             } catch (Exception e) {
 46                 e.printStackTrace();
 47             }
 48         }*/
 49     }
 50
 51
 52
 53     /**
 54      * 发送xml数据请求到server端
 55      * @param url xml请求数据地址
 56      * @param xmlString 发送的xml数据流
 57      * @return null发送失败,否则返回响应内容
 58      */
 59     public String post(String url,String xmlFileName){
 60         //关闭
 61         System.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.SimpleLog");
 62         System.setProperty("org.apache.commons.logging.simplelog.showdatetime", "true");
 63         System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.commons.httpclient", "stdout");
 64
 65         //创建httpclient工具对象
 66         HttpClient client = new HttpClient();
 67         //创建post请求方法
 68         PostMethod myPost = new PostMethod(url);
 69         //设置请求超时时间
 70         client.setConnectionTimeout(300*1000);
 71         String responseString = null;
 72         try{
 73             //设置请求头部类型
 74             myPost.setRequestHeader("Content-Type","text/xml");
 75             myPost.setRequestHeader("charset","utf-8");
 76
 77             //设置请求体,即xml文本内容,注:这里写了两种方式,一种是直接获取xml内容字符串,一种是读取xml文件以流的形式
 78 //          myPost.setRequestBody(xmlString);
 79
 80             InputStream body=this.getClass().getResourceAsStream("/"+xmlFileName);
 81             myPost.setRequestBody(body);
 82 //            myPost.setRequestEntity(new StringRequestEntity(xmlString,"text/xml","utf-8"));
 83             int statusCode = client.executeMethod(myPost);
 84             if(statusCode == HttpStatus.SC_OK){
 85                 BufferedInputStream bis = new BufferedInputStream(myPost.getResponseBodyAsStream());
 86                 byte[] bytes = new byte[1024];
 87                 ByteArrayOutputStream bos = new ByteArrayOutputStream();
 88                 int count = 0;
 89                 while((count = bis.read(bytes))!= -1){
 90                     bos.write(bytes, 0, count);
 91                 }
 92                 byte[] strByte = bos.toByteArray();
 93                 responseString = new String(strByte,0,strByte.length,"utf-8");
 94                 bos.close();
 95                 bis.close();
 96             }
 97         }catch (Exception e) {
 98             e.printStackTrace();
 99         }
100         myPost.releaseConnection();
101         return responseString;
102     }
103
104     /**
105      * 用传统的URI类进行请求
106      * @param urlStr
107      */
108     public void testPost(String urlStr) {
109         try {
110             URL url = new URL(urlStr);
111             URLConnection con = url.openConnection();
112             con.setDoOutput(true);
113             con.setRequestProperty("Pragma:", "no-cache");
114             con.setRequestProperty("Cache-Control", "no-cache");
115             con.setRequestProperty("Content-Type", "text/xml");
116
117             OutputStreamWriter out = new OutputStreamWriter(con.getOutputStream());
118             String xmlInfo = getXmlInfo();
119             System.out.println("urlStr=" + urlStr);
120 //            System.out.println("xmlInfo=" + xmlInfo);
121             out.write(new String(xmlInfo.getBytes("UTF-8")));
122             out.flush();
123             out.close();
124             BufferedReader br = new BufferedReader(new InputStreamReader(con
125                     .getInputStream()));
126             String line = "";
127             for (line = br.readLine(); line != null; line = br.readLine()) {
128                 System.out.println(line);
129             }
130         } catch (Exception e) {
131             e.printStackTrace();
132         }
133     }
134
135     private String getXmlInfo() {
136         StringBuilder sb = new StringBuilder();
137         sb.append("<?xml version=‘1.0‘ encoding=‘UTF-8‘?>");
138         sb.append("<Message>");
139         sb.append(" <header>");
140         sb.append("     <action>readMeetingStatus</action>");
141         sb.append("     <service>meeting</service>");
142         sb.append("     <type>xml</type>");
143         sb.append("     <userName>admin</userName>");
144         sb.append("     <password>admin</password>");
145         sb.append("     <siteName>box</siteName>");
146         sb.append(" </header>");
147         sb.append(" <body>");
148         sb.append("     <confKey>43283344</confKey>");
149         sb.append(" </body>");
150         sb.append("</Message>");
151
152         return sb.toString();
153     }
154 } 
时间: 2024-10-27 17:43:26

用JAVA发送一个XML格式的HTTP请求的相关文章

requests(一): 发送一个json格式的post请求

总结一下问题所在 ,今天我也遇到这个问题了,所以请教了一下下列博文的博主,小简姐姐 总结:我们平常请求都是字典格式 ,有些post接口可能限制只能json格式,所以你请求时候 data=data ,会请求失败 json=data ,请求参数是json格式.....成长道路的小白,遇到问题就记录下,希望能帮到大家 今天给一位同学解决post发送数据格式为json格式的请求,顺便确认一下问题归属. 背景: 用postman工具发送一个数据格式为json的请求,得到了服务器的响应. 用python的r

XML编程总结(六)——使用JAXB进行java对象和xml格式之间的相互转换

(六)使用JAXB进行java对象和xml格式之间的相互转换 JAXB能够使用Jackson对JAXB注解的支持实现(jackson-module-jaxb-annotations),既方便生成XML,也方便生成JSON,这样一来可以更好的标志可以转换为JSON对象的JAVA类. JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术.该过程中,JAXB也提供了将XML实例文档反向生成Java对象树

java socket报文通信(三)java对象和xml格式文件的相互转换

前两节讲了socket服务端,客户端的建立以及报文的封装.今天就来讲一下java对象和xml格式文件的相互转换. 上一节中我们列举了一个报文格式,其实我们可以理解为其实就是一个字符串.但是我们不可能每次都去写字符串啊,这样的话肯定要疯.既然是面向对象的编程,肯定会有好的办法来解决这个问题.我们使用JAXBContext这个工具. package cn.com.egj.entity.shortcutTransfer.test; import java.io.BufferedReader; impo

发送一个简单的http get 请求并且响应

问题 如何发送一个简单的HTTP GET请求并且取回相应的HTTP响应. 设计 创建一个WebClient类的实例,然后使用它的DownloadData()方法. 方案 string uri = "http://server/path/WebForm.aspx"; WebClient wc = new WebClient(); Console.WriteLine("Sending an HTTP GET request to " + uri); byte[] bRe

JAVA调用返回XML格式数据的WebService,并通过XPath解析XML的应用

一.获取WSDL定义和endpoit地址 WSDL定义地址由开发者提供,为http://10.10.xx.xxx/webservice/Pangus.SCC.OracleEBS.WebService.dll/wsdl/IWebService 通过浏览器访问WSDL地址,可以看到endpoint地址的说明: <service name="IWebServiceservice"> <port name="IWebServicePort" binding

把Java对象转为xml格式

主要使用到的Java类有:javax.xml.bind.JAXBContext,javax.xml.bind.Marshaller(编排) 代码主要展示如下: public class Student { private int id; private String name; private int age; public int getId() { return id; } public void setId(int id) { this.id = id; } public String g

一个可序列化的C#对象,如何转成一个XML格式的文件或字符串【转】

原文:http://blog.csdn.net/otong/article/details/7894059 序列化或反序列化成一个字符串: 方法一: 序列化: [csharp] view plain copy public static string XMLSerialize<T>(T entity) { StringBuilder buffer = new StringBuilder(); XmlSerializer serializer = new XmlSerializer(typeof

Java把一个gzip格式的文件读出来转存成String

<pre name="code" class="java">StringBuffer html = new StringBuffer(); InputStream in = new GZIPInputStream(new FileInputStream(file)); Scanner sc=new Scanner(in); while(sc.hasNextLine()){ html.append(sc.nextLine().toString()+&quo

java发送http的get、post请求

文章转载于:http://www.cnblogs.com/zhuawang/archive/2012/12/08/2809380.html Http请求类 package wzh.Http; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.URL; import java.