您的位置:首页 > 移动开发 > Android开发

Android通过post请求发送一个xml,解析返回xml数据

2015-08-12 15:50 531 查看
工作的时候需要往后台发送一个post数据请求



其中发送的xml数据为:

<?xml version = “1.0” ?>

<SSOMessage version=”1.0”>

<SSOParas>

<SeqID>SeqID</SeqID>

<CommandID>CommandID</CommandID>

<MSISDN>ABSCDSDF</MSISDN>

<ChargeMSISDN>ChargeMSISDN</ChargeMSISDN>

<SPID>SPID</SPID>

<Code> Code </ Code >

< IDtype > IDtype 0</ IDtype >

<ID> ID 0</ID>

</SSOParas>

</SSOMessage>

返回的xml数据为:

<?xml version = “1.0” ?>

<SSOMessage version=”1.0”>

<SSOParas>

<SeqID>SeqID</SeqID>

<ResultCode>ResultCode0</ResultCode>

</SSOParas>

</SSOMessage>

然后进行解析,代码如下,参考一下,对于以后再做post请求的时候,做参考

class
httpThread implements Runnable {

/* (non-Javadoc)

* @see java.lang.Runnable#run()

*/

@Override

public void run() {

// TODO Auto-generated method stub

//组建xml数据

StringBuilder xml = new StringBuilder();

xml.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");

xml.append("<SSOMessage version=\"1.0\">");

xml.append("<SSOParas>");

xml.append("<SeqID>13333333333</SeqID>");

xml.append("<CommandID>1</CommandID>");

xml.append("<MSISDN>1333333333</MSISDN>");

xml.append("<ChargeMSISDN>1333333333</ChargeMSISDN>");

xml.append("<SPID>3510127</SPID>");

xml.append("<Code></Code>");

xml.append("<IDtype>0</IDtype>");

xml.append("<ID>135000000000000216559</ID>");

xml.append("</SSOParas>");

xml.append("</SSOMessage>");

try {

byte[] xmlbyte = xml.toString().getBytes("UTF-8");



System.out.println(xml);

URL url = new URL("http://118.85.194.28:8080/sotpms_server/GetSSOMessage");





HttpURLConnection conn = (HttpURLConnection) url.openConnection();

conn.setConnectTimeout(5000);

conn.setDoOutput(true);// 允许输出

conn.setDoInput(true);

conn.setUseCaches(false);// 不使用缓存

conn.setRequestMethod("POST");

conn.setRequestProperty("Connection", "Keep-Alive");// 维持长连接

conn.setRequestProperty("Charset", "UTF-8");

conn.setRequestProperty("Content-Length",

String.valueOf(xmlbyte.length));

conn.setRequestProperty("Content-Type", "text/xml; charset=UTF-8");

conn.setRequestProperty("X-ClientType", "2");//发送自定义的头信息

conn.getOutputStream().write(xmlbyte);

conn.getOutputStream().flush();

conn.getOutputStream().close();

if (conn.getResponseCode() != 200)

throw new RuntimeException("请求url失败");

InputStream is = conn.getInputStream();// 获取返回数据



// 使用输出流来输出字符(可选)

ByteArrayOutputStream out = new ByteArrayOutputStream();

byte[] buf = new byte[1024];

int len;

while ((len = is.read(buf)) != -1) {

out.write(buf, 0, len);

}

String string = out.toString("UTF-8");

System.out.println(string);

out.close();





// xml解析

String version = null;

String seqID = null;

XmlPullParser parser = Xml.newPullParser();

try {

parser.setInput(new ByteArrayInputStream(string.substring(1)

.getBytes("UTF-8")), "UTF-8");

parser.setInput(is, "UTF-8");

int eventType = parser.getEventType();

while (eventType != XmlPullParser.END_DOCUMENT) {

if (eventType == XmlPullParser.START_TAG) {

if ("SSOMessage".equals(parser.getName())) {

version = parser.getAttributeValue(0);

} else if ("SeqID".equals(parser.getName())) {

seqID = parser.nextText();

} else if ("ResultCode".equals(parser.getName())) {

resultCode = parser.nextText();

}

}

eventType = parser.next();

}

} catch (XmlPullParserException e) {

e.printStackTrace();

System.out.println(e);

} catch (IOException e) {

e.printStackTrace();

System.out.println(e);

}

System.out.println("version = " + version);

System.out.println("seqID = " + seqID);

System.out.println("resultCode = " + resultCode);*/

} catch (Exception e) {

// TODO Auto-generated catch block

System.out.println(e);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: