1. The webservice provider: http://www.webxml.com.cn/zh_cn/index.aspx
2. Below we take "obtaining the online status of Tencent QQ" as an example.
The parameter screenshot is as follows:
SOAP 1.1
The following is an example of a SOAP 1.2 request and response. The displayed placeholders need to be replaced with actual values.
[http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?op=qqCheckOnline] Click the previous URL to view the corresponding parameter information.
3. Java program
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 { /** * Get Tencent QQ online status * * Input parameter: QQ number String, default QQ number: 8698053. Return data: String, Y = online; N = offline; E = wrong QQ number; A = business user verification failed; V = free users exceeded the number * @throws Exception */ @Test public void sendSms() throws Exception { String qqCode = "416501600";//qq number 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); // print the return result System.out.println("result:" + result); } /** * file content replacement * * @param inFileName source file * @param from * @param to * @return returns the replaced file * @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(); //Delete the source file //outfile.renameTo(infile); //Rename the temporary file return outFile; } /** * Read data from the input stream * @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();//Binary data of the webpage outStream.close(); inStream.close(); return data; } }
4. The SendInstantSms.xml file is as follows, placed in the src directory
<?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>
https://www.cnblogs.com/linjiqin/archive/2012/05/07/2488880.html
Example of sending MMS:
public String getSoapSmssendForMMs(String userid,String pass,String mobiles,String title,String content,String buffer,String mmsFileName) { try { String soap = ""; String FileName = mmsFileName.substring(mmsFileName.lastIndexOf("\\")+1,s.length()) soap = "<?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>" +"<SendMMS xmlns=\"http://tempuri.org/\">" +"<uid>"+userid+"</uid>" +"<pwd>"+pass+"</pwd>" +"<mobno>"+mobiles+"</mobno>" +"<title>"+title+"</title>" +"<content>"+content+"</content>" +"<Bytes>"+buffer+"</Bytes>" +"<mmsFileName>"+FileName+"</mmsFileName>" //File name without path +"</SendMMS>" +"</soap:Body>" +"</soap:Envelope>"; return soap; } catch (Exception ex) { ex.printStackTrace(); return null; } } private InputStream getSoapInputStreamForMMs(String userid,String pass,String mobiles,String title,String content,String mmsFileName)throws Exception { URLConnection conn = null; InputStream is = null; try { /////////////////////////////////////////////////////////////////////////////////////////// String ret=new String(); File f=new File(mmsFileName); //filename image path byte buff[]=new byte[(int)f.length()]; InputStream in = new FileInputStream(f); in.read(buff); ret=new sun.misc.BASE64Encoder().encode(buff); //The string returned by the specific encoding method ret in.close(); ////////////////////////////////////////////////////////////////////////////////////////////////////// String soap=getSoapSmssendForMMs(userid,pass,mobiles,title,content,ret,mmsFileName); if(soap==null) { return null; } try{ URL url=new URL("http://service2.winic.org:8003/Service.asmx"); conn=url.openConnection(); conn.setUseCaches(false); conn.setDoInput(true); conn.setDoOutput(true); conn.setRequestProperty("Content-Length", Integer.toString(soap.length())); conn.setRequestProperty("Content-Type", "text/xml; charset=utf-8"); conn.setRequestProperty("HOST","service2.winic.org"); conn.setRequestProperty("SOAPAction","\"http://tempuri.org/SendMMS\""); OutputStream os=conn.getOutputStream(); OutputStreamWriter osw=new OutputStreamWriter(os,"utf-8"); osw.write(soap); osw.flush(); }catch(Exception ex){ System.out.print("SmsSoap.openUrl error:"+ex.getMessage()); } try{ is=conn.getInputStream(); }catch(Exception ex1){ System.out.print("SmsSoap.getUrl error:"+ex1.getMessage()); } return is; } catch(Exception e) { System.out.print("SmsSoap.InputStream error:"+e.getMessage()); return null; } } //Send MMS public String sendSMMs(String userid,String pass,String mobiles,String title,String content,String mmsFileName) { String result = "-12"; try { Document doc; DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance(); dbf.setNamespaceAware(true); DocumentBuilder db=dbf.newDocumentBuilder(); InputStream is=getSoapInputStreamForMMs(userid,pass,mobiles,title,content,mmsFileName); //vfbtye1, if(is!=null){ doc=db.parse(is); NodeList nl=doc.getElementsByTagName("SendMMSResult"); Node n=nl.item(0); result=n.getFirstChild().getNodeValue(); is.close(); } return result; } catch(Exception e) { System.out.print("SmsSoap.sendSms error:"+e.getMessage()); return "-12"; } }