Android通過post請求發送一個xml,解析返回xml數據

工作的時候需要往後臺發送一個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);
        }
    }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章