Java发HTTP POST请求(内容为xml格式)

来源:互联网 发布:淘宝买家长时间不发货 编辑:程序博客网 时间:2024/05/23 16:49
今天在给平台用户提供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);}}