android 发送soap请求

来源:互联网 发布:淘宝应用权限设置 编辑:程序博客网 时间:2024/05/20 22:38
发送WSDL  SOAP请求package com.example.testwsdlproject;import java.io.ByteArrayOutputStream;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;import org.xmlpull.v1.XmlPullParser;import android.os.Bundle;import android.app.Activity;import android.util.Xml;import android.view.Menu;import android.view.View;import android.widget.EditText;import android.widget.TextView;public class MainActivity extends Activity {EditText et1;TextView tv1;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);et1 = (EditText) this.findViewById(R.id.textView1);tv1 = (TextView) this.findViewById(R.id.textView2);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}public void clickEvent(View v){String status = getQQStatus(et1.getText().toString());tv1.setText(status);}private String getQQStatus(String qq) {try {String soap = readSoap();soap = soap.replaceAll("QQCODE", qq);byte[] entity = soap.getBytes();String path = "http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl";HttpURLConnection conn = (HttpURLConnection) new URL(path).openConnection();conn.setConnectTimeout(5000);conn.setRequestMethod("POST");conn.setDoOutput(true);conn.setRequestProperty("Content-Type", "application/soap+xml; charset=utf-8");conn.setRequestProperty("Content-Length", String.valueOf(entity.length));conn.getOutputStream().write(entity);if(conn.getResponseCode() == 200){return parseSOAP(conn.getInputStream());}return null;} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}return null;}private static String parseSOAP(InputStream xml)throws Exception{XmlPullParser pullParser = Xml.newPullParser();pullParser.setInput(xml, "UTF-8");int event = pullParser.getEventType();while(event != XmlPullParser.END_DOCUMENT){switch (event) {case XmlPullParser.START_TAG:if("qqCheckOnlineResult".equals(pullParser.getName())){return pullParser.nextText();}break;}event = pullParser.next();}return null;}//读取soap文件private static String readSoap() throws Exception{InputStream inStream = MainActivity.class.getClassLoader().getResourceAsStream("soap.xml");byte[] data = read(inStream);return new String(data);}//解析soap文件为byte格式public static byte[] read(InputStream inStream) throws Exception{ByteArrayOutputStream outputStream = new ByteArrayOutputStream();byte[] buffer = new byte[1024];int len = 0;while( (len = inStream.read(buffer)) != -1){outputStream.write(buffer, 0, len);}inStream.close();return outputStream.toByteArray();}}