Java发HTTP POST请求(内容为xml格式)
来源:互联网 发布:java面试专业技能 编辑:程序博客网 时间:2024/05/22 12:02
今天在给平台用户提供http简单接口的时候,顺便写了个调用的Java类供他参考。
服务器地址:http://5.0.217.50:17001/VideoSend
服务器提供的是xml格式的http接口,接口定义如下:
<!--视频点送: videoSend--><videoSend> <header> <sid>%s</sid> <type>service</type> </header> <service name="videoSend"> <fromNum>%s</fromNum> <toNum>%s</toNum> <!--需要接通的用户的电话号码 --> <videoPath>%s</videoPath> <!--视频文件路径 --> <chargeNumber>%s</chargeNumber> <!--计费号码 --> </service></videoSend><!--视频点送返回结果: videoSendResult--><videoSend> <header> <sid>%s</sid> <type>service</type> </header> <service name="videoSendResult"> rescode>%s</rescode> <!--0000:视频点送成功,0001:请求参数信息错误, 0002:接通用户失败--> </service></videoSend>对应调用端的Java代码(只是个demo,参数都暂时写死了)如下:
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.net.MalformedURLException;import java.net.URL;import java.net.URLConnection;public class HttpPostTest { 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("ISO-8859-1"))); 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 (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } private String getXmlInfo() { StringBuilder sb = new StringBuilder(); sb.append("<videoSend>"); sb.append(" <header>"); sb.append(" <sid>1</sid>"); sb.append(" <type>service</type>"); sb.append(" </header>"); sb.append(" <service name=\"videoSend\">"); sb.append(" <fromNum>0000021000011001</fromNum>"); sb.append(" <toNum>33647405</toNum>"); sb.append(" <videoPath>mnt/5.0.217.50/resources/80009.mov</videoPath>"); sb.append(" <chargeNumber>0000021000011001</chargeNumber>"); sb.append(" </service>"); sb.append("</videoSend>"); return sb.toString(); } public static void main(String[] args) { String url = "http://5.0.217.50:17001/VideoSend"; new HttpPostTest().testPost(url); }}
2 XML传输
二、客户端代码
通过Http Post Xml传递数据,客户端一般是通过URL建立到服务端的连接,向服务端发送xml数据,然后获取服务端的响应并进行解析:
String xmlString = "<?xml version='1.0' encoding='gb2312'?>" + "<Req>" + "<EventContentReq>" + "<EventID>101</EventID >" + "</EventContentReq>" + "</Req>"; byte[] xmlData = xmlString.getBytes(); String urlStr = "http://124.128.62.164:7001/FetchTaskDataServlet"; DataInputStream input = null; java.io.ByteArrayOutputStream out = null; try{ //获得到位置服务的链接 URL url = new URL(urlStr); URLConnection urlCon = url.openConnection(); urlCon.setDoOutput(true); urlCon.setDoInput(true); urlCon.setUseCaches(false); //将xml数据发送到位置服务 urlCon.setRequestProperty("Content-Type", "text/xml"); urlCon.setRequestProperty("Content-length",String.valueOf(xmlData.length)); DataOutputStream printout = new DataOutputStream(urlCon.getOutputStream()); printout.write(xmlData); printout.flush(); printout.close(); input = new DataInputStream(urlCon.getInputStream()); byte[] rResult; out = new java.io.ByteArrayOutputStream(); byte[] bufferByte = newbyte[256]; int l = -1; int downloadSize = 0; while ((l = input.read(bufferByte)) > -1) { downloadSize += l; out.write(bufferByte, 0, l); out.flush(); } rResult = out.toByteArray(); DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document d = db.parse(new ByteArrayInputStream(rResult)); String TaskAddr = d.getElementsByTagName("TaskAddr").item(0).getFirstChild().getNodeValue(); System.out.println("TaskAddr:"+TaskAddr); } catch(Exception e){ e.printStackTrace(); } finally { try { out.close(); input.close(); } catch (Exception ex) { } }
三、服务端代码
服务端一般首先获取客户端发来的xml数据,进行解析,并将响应返回给客户端:
try{ //解析对方发来的xml数据,获得EventID节点的值 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document d = db.parse(request.getInputStream()); String evtid = d.getElementsByTagName("EventID").item(0).getFirstChild().getNodeValue(); // System.out.println("evtid" + evtid); //根据evtid查找任务,生成xml字符串 UfgovDBUtil dbUtil = new UfgovDBUtil(); String xmlString = dbUtil.fetchTaskData(evtid); // System.out.println("returned xmlString:" + xmlString); //把xml字符串写入响应 byte[] xmlData = xmlString.getBytes(); response.setContentType("text/xml"); response.setContentLength(xmlData.length); ServletOutputStream os = response.getOutputStream(); os.write(xmlData); os.flush(); os.close(); } catch(Exception e){ e.printStackTrace(); }
转自:http://a52071453.iteye.com/blog/1706949
0 0
- Java发HTTP POST请求(内容为xml格式)
- Java发HTTP POST请求(内容为xml格式)
- Java发HTTP POST请求(内容为xml格式)
- Java发HTTP POST请求(内容为xml格式)
- Java发HTTP POST请求(内容为xml格式)
- Java发HTTP POST请求(内容为xml格式)
- Java发送HTTP POST请求(内容为xml格式)
- Java发送HTTP POST请求(内容为xml格式)
- java发送http post请求,格式为xml
- 对于java用发送http请求,请求内容为xml格式
- 对于java用发送http请求,请求内容为xml格式
- java发送http,内容为xml格式
- JAVA HTTP POST请求(请求参数格式为json)
- java 用http发post请求
- java 发送 json、xml格式的 http请求,并读取响应response内容实例
- java http请求 获取xml格式
- java发送xml格式HTTP请求
- java 发http请求
- The c++ output is unbelievable
- webdriverer
- Scale和Resolution的含义及转换算法
- [UVALive4864] Bit Counting && 数位DP
- 【白话经典算法系列之十七】 数组中只出现一次的数
- Java发HTTP POST请求(内容为xml格式)
- Java基本类型和引用类型
- Scramble String
- 39级台阶
- 补零与离散傅里叶变换的分辨率
- Java 引用传递
- U-Boot移植--支持串口Xmodem协议
- [UVALive5058] Counting BST && 计数DP + BST
- 01背包