1.webservice提供方:http://www.webxml.com.cn/zh_cn/index.aspx
2.下面我們以“獲得騰訊QQ在線狀態”為例。
參數截圖如下圖:
SOAP 1.1
以下是 SOAP 1.2 請求和響應示例。所顯示的占位符需替換為實際值。

[http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?op=qqCheckOnline] 點擊前面的網址,查看對應參數信息。
3.Java程序
package junit; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.URL; import org.junit.Test; public class JxSendSmsTest { /** * 獲得騰訊QQ在線狀態 * * 輸入參數:QQ號碼 String,默認QQ號碼:8698053。返回數據:String,Y = 在線;N = 離線;E = QQ號碼錯誤;A = 商業用戶驗證失敗;V = 免費用戶超過數量 * @throws Exception */ @Test public void sendSms() throws Exception { String qqCode = "416501600";//qq號碼 String urlString = "http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx"; String xml = JxSendSmsTest.class.getClassLoader().getResource("SendInstantSms.xml").getFile(); String xmlFile=replace(xml, "qqCodeTmp", qqCode).getPath(); String soapActionString = "http://WebXml.com.cn/qqCheckOnline"; URL url = new URL(urlString); HttpURLConnection httpConn = (HttpURLConnection) url.openConnection(); File fileToSend = new File(xmlFile); byte[] buf = new byte[(int) fileToSend.length()]; new FileInputStream(xmlFile).read(buf); httpConn.setRequestProperty("Content-Length", String.valueOf(buf.length)); httpConn.setRequestProperty("Content-Type", "text/xml; charset=utf-8"); httpConn.setRequestProperty("soapActionString", soapActionString); httpConn.setRequestMethod("POST"); httpConn.setDoOutput(true); httpConn.setDoInput(true); OutputStream out = httpConn.getOutputStream(); out.write(buf); out.close(); byte[] datas=readInputStream(httpConn.getInputStream()); String result=new String(datas); //打印返回結果 System.out.println("result:" + result); } /** * 文件內容替換 * * @param inFileName 源文件 * @param from * @param to * @return 返回替換后文件 * @throws IOException * @throws UnsupportedEncodingException */ public static File replace(String inFileName, String from, String to) throws IOException, UnsupportedEncodingException { File inFile = new File(inFileName); BufferedReader in = new BufferedReader(new InputStreamReader( new FileInputStream(inFile), "utf-8")); File outFile = new File(inFile + ".tmp"); PrintWriter out = new PrintWriter(new BufferedWriter( new OutputStreamWriter(new FileOutputStream(outFile), "utf-8"))); String reading; while ((reading = in.readLine()) != null) { out.println(reading.replaceAll(from, to)); } out.close(); in.close(); //infile.delete(); //刪除源文件 //outfile.renameTo(infile); //對臨時文件重命名 return outFile; } /** * 從輸入流中讀取數據 * @param inStream * @return * @throws Exception */ public static byte[] readInputStream(InputStream inStream) throws Exception{ ByteArrayOutputStream outStream = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = 0; while( (len = inStream.read(buffer)) !=-1 ){ outStream.write(buffer, 0, len); } byte[] data = outStream.toByteArray();//網頁的二進制數據 outStream.close(); inStream.close(); return data; } }
4、SendInstantSms.xml文件如下,放在src目錄下
<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <qqCheckOnline xmlns="http://WebXml.com.cn/"> <qqCode>qqCodeTmp</qqCode> </qqCheckOnline> </soap:Body> </soap:Envelope>
---------------------------------------------------------------------------------------
Blog:http://www.cnblogs.com/linjiqin/
J2EE、Android、Linux、Oracle QQ交流群:142463980、158560018(滿)
題外話:
本人來自鐵觀音的發源地——泉州安溪,正宗安溪鐵觀音,有需要的友友歡迎加我Q:416501600。
茶葉淘寶店:http://shop61968332.taobao.com/
