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

今天在给平台用户提供http简单接口的时候,顺便写了个调用的Java类供他参考。服务器地址:http://5.0.217.50:17001/VideoSend服务器提供的是xml格式的http接口,接口定义如下:

%s

service

%s

%s

%s

%s

%s

service

rescode>%s

对应调用端的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("");

sb.append(" ");

sb.append(" 1");

sb.append(" service");

sb.append(" ");

sb.append(" ");

sb.append(" 0000021000011001");

sb.append(" 33647405");

sb.append(" mnt/5.0.217.50/resources/80009.mov");

sb.append(" 0000021000011001");

sb.append(" ");

sb.append("");

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数据,然后获取服务端的响应并进行解析:

Java代码

String xmlString ="<?xml version='1.0' encoding='gb2312'?>"

+""

+""

+"101"

+""

+"";

byte[] xmlData = xmlString.getBytes();

String urlStr ="http://124.128.62.164:7001/FetchTaskDataServlet";

DataInputStream input =null;

java.io.ByteArrayOutputStream out =null;

try{

//获得到位置服务的链接

URL url =newURL(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 =newDataOutputStream(urlCon.getOutputStream());

printout.write(xmlData);

printout.flush();

printout.close();

input =newDataInputStream(urlCon.getInputStream());

byte[] rResult;

out =newjava.io.ByteArrayOutputStream();

byte[] bufferByte =newbyte[256];

intl = -1;

intdownloadSize =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(newByteArrayInputStream(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数据,进行解析,并将响应返回给客户端:

Java代码

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 =newUfgovDBUtil();

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();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值