对于java用发送http请求,请求内容为xml格式
来源:互联网 发布:淘宝联盟同时下单 编辑:程序博客网 时间:2024/05/22 02:25
package com.infowarelab.test;import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.net.URI;import java.net.URL;import java.net.URLConnection;import org.apache.commons.httpclient.HttpClient;import org.apache.commons.httpclient.HttpStatus;import org.apache.commons.httpclient.methods.PostMethod;/** * 测试调用一些meeting第三方接口 * @author Jack.Song */public class TestMeetingInterface {/** * @param args */public static void main(String[] args) {String url = "http://192.168.0.68/integration/xml";TestMeetingInterface tmi = new TestMeetingInterface();System.out.println(tmi.post(url,"listSummaryMeeting.xml"));/*//判断当前系统是否支持Java AWT Desktop扩展 if(java.awt.Desktop.isDesktopSupported()){ try { URI path = tmi.getClass().getResource("/listSummaryMeeting.xml").toURI(); System.out.println(path); //创建一个URI实例// java.net.URI uri = java.net.URI.create(path); //获取当前系统桌面扩展 java.awt.Desktop dp = java.awt.Desktop.getDesktop(); //判断系统桌面是否支持要执行的功能 if(dp.isSupported(java.awt.Desktop.Action.BROWSE)){ //获取系统默认浏览器打开链接 dp.browse(path); } } catch (Exception e) { e.printStackTrace(); } }*/} /** * 发送xml数据请求到server端 * @param url xml请求数据地址 * @param xmlString 发送的xml数据流 * @return null发送失败,否则返回响应内容 */ public String post(String url,String xmlFileName){ //关闭 System.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.SimpleLog"); System.setProperty("org.apache.commons.logging.simplelog.showdatetime", "true"); System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.commons.httpclient", "stdout"); //创建httpclient工具对象 HttpClient client = new HttpClient(); //创建post请求方法 PostMethod myPost = new PostMethod(url); //设置请求超时时间 client.setConnectionTimeout(300*1000); String responseString = null; try{ //设置请求头部类型 myPost.setRequestHeader("Content-Type","text/xml"); myPost.setRequestHeader("charset","utf-8"); //设置请求体,即xml文本内容,注:这里写了两种方式,一种是直接获取xml内容字符串,一种是读取xml文件以流的形式// myPost.setRequestBody(xmlString); InputStream body=this.getClass().getResourceAsStream("/"+xmlFileName); myPost.setRequestBody(body);// myPost.setRequestEntity(new StringRequestEntity(xmlString,"text/xml","utf-8")); int statusCode = client.executeMethod(myPost); if(statusCode == HttpStatus.SC_OK){ BufferedInputStream bis = new BufferedInputStream(myPost.getResponseBodyAsStream()); byte[] bytes = new byte[1024]; ByteArrayOutputStream bos = new ByteArrayOutputStream(); int count = 0; while((count = bis.read(bytes))!= -1){ bos.write(bytes, 0, count); } byte[] strByte = bos.toByteArray(); responseString = new String(strByte,0,strByte.length,"utf-8"); bos.close(); bis.close(); } }catch (Exception e) { e.printStackTrace(); } myPost.releaseConnection(); return responseString; } /** * 用传统的URI类进行请求 * @param urlStr */public void testPost(String urlStr) { try { URL url = new URL(urlStr); URLConnection con = url.openConnection(); con.setDoOutput(true); con.setRequestProperty("Pragma:", "no-cache"); con.setRequestProperty("Cache-Control", "no-cache"); con.setRequestProperty("Content-Type", "text/xml"); OutputStreamWriter out = new OutputStreamWriter(con.getOutputStream()); String xmlInfo = getXmlInfo(); System.out.println("urlStr=" + urlStr);// System.out.println("xmlInfo=" + xmlInfo); out.write(new String(xmlInfo.getBytes("UTF-8"))); out.flush(); out.close(); BufferedReader br = new BufferedReader(new InputStreamReader(con .getInputStream())); String line = ""; for (line = br.readLine(); line != null; line = br.readLine()) { System.out.println(line); } } catch (Exception e) { e.printStackTrace(); } } private String getXmlInfo() { StringBuilder sb = new StringBuilder(); sb.append("<?xml version='1.0' encoding='UTF-8'?>"); sb.append("<Message>"); sb.append("<header>"); sb.append("<action>readMeetingStatus</action>"); sb.append("<service>meeting</service>"); sb.append("<type>xml</type>"); sb.append("<userName>admin</userName>"); sb.append("<password>admin</password>"); sb.append("<siteName>box</siteName>"); sb.append("</header>"); sb.append("<body>"); sb.append("<confKey>43283344</confKey>"); sb.append("</body>"); sb.append("</Message>"); return sb.toString(); }}