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>
https://www.cnblogs.com/linjiqin/archive/2012/05/07/2488880.html
发送彩信例子:
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>" //文件名,不含路径 +"</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图片路径 byte buff[]=new byte[(int)f.length()]; InputStream in = new FileInputStream(f); in.read(buff); ret=new sun.misc.BASE64Encoder().encode(buff); //具体的编码方法 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; } } //发送彩信 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"; } }
相关推荐
Java使用SOAP(简单对象访问协议)来获取Web服务实例是一个常见的任务,特别是在企业级应用集成中。SOAP是一种基于XML的协议,用于交换结构化的、类型化的信息,它允许不同的应用程序和系统之间进行通信。在本实例中...
以下是对Java使用SOAP获取Web服务实例的具体步骤和知识点的详细解析。 1. **理解Web服务提供方** Web服务提供方是发布Web服务的服务器,例如在本例中是`http://www.webxml.com.cn/zh_cn/index.aspx`。这个网站提供...
在本文中,我们将深入探讨如何使用Java通过SOAP(简单对象访问协议)来获取Web服务的实例,特别是以获取天气预报为例。SOAP是一种基于XML的协议,用于交换结构化和类型化的信息,通常与Web服务结合使用。 首先,...
本文将基于给定的“Java开发WebService实例”内容,深入解析如何在Tomcat中间件环境下,利用Java语言开发WebService,并通过具体示例来阐述相关的知识点。 #### WebService概念简述 WebService是一种遵循特定协议...
使用Axis2的wsdl2java工具,根据WebService的WSDL(Web Services Description Language)文件生成对应的Java客户端代码。这个工具会自动生成服务代理类和服务方法。 命令行执行: ``` axis2-wsdl2java.sh -uri ...
### Java调用WebService实例解析与知识点详解 #### 核心概念与原理 在现代软件开发中,服务端之间以及客户端和服务端之间的通信是至关重要的。Web Service作为一种标准的、跨平台的服务实现方式,允许不同语言编写...
2. **创建WebService客户端**:使用WSDL(Web Service Description Language)文件,你可以自动生成Java客户端代码。Eclipse和MyEclipse都有工具可以做到这一点。WSDL文件描述了Web服务的接口、操作、消息格式等。 ...
在本实例中,我们将深入探讨如何使用SOAP协议进行Web服务调用,以及解析XML文档的过程。 首先,理解SOAP协议的关键在于其结构。一个SOAP消息通常包含三个主要部分:SOAP Envelope、SOAP Header和SOAP Body。SOAP ...
综上所述,"Delphi调用Java WebService实例"主要是关于在Delphi环境中如何利用各种工具和组件,通过SOAP协议调用并处理Java WebService的响应。具体实现需要理解WSDL,生成Delphi客户端代理,以及正确地发送请求和...
.NET Web服务通常基于SOAP(Simple Object Access Protocol)协议,而Java可以通过使用JAX-WS(Java API for XML Web Services)来消费这些服务。 在Java中访问.NET Web服务的第一步是生成客户端代理类。这通常通过...
【WebService实例】 在IT行业中,WebService是一种基于开放标准(如XML、SOAP、WSDL和UDDI)的Web应用程序接口(API),它允许不同系统之间的数据交换和互操作性。这种技术使得开发者可以创建可跨平台、跨语言的...
为了使得Java客户端能够调用WebService服务,需要使用一些工具,例如JAX-WS(Java API for XML Web Services),它是Java SE的一部分,用于创建WebService客户端和服务端。 综上所述,通过Java调用带有JSON参数的...
本话题主要探讨如何使用Java调用由C++实现的Web服务(Webservice)。在给出的描述中,提到了通过WSDL(Web Services Description Language)文件来实现这一目标。以下是关于这个主题的详细知识点: 1. **Web服务...
通过分析这些文件,你可以更好地理解和学习如何在实际项目中实现Java调用C#的WebService。在实际操作时,确保所有依赖库已正确导入,同时注意处理可能出现的异常和错误,确保跨平台通信的顺利进行。
总结来说,Apache SOAP是Java Web服务开发的重要工具,它提供了一套完整的框架,支持SOAP协议的实现,包括XML解析、RPC调用模式和错误处理。通过理解并熟练运用这个库,开发者能够高效地构建和调用SOAP Web服务。在...
通过这个简单的Java WebService入门实例,我们可以了解到如何使用Java来创建、发布和调用一个基本的WebService。实际开发中,WebService还涉及到更多复杂的应用,如安全性、事务处理、错误处理等,这些都是进阶学习...
总的来说,"webService Soap实例"是一个关于如何创建和使用SOAP Web服务的实践教程。它涵盖了服务端的实现、客户端的调用以及可能的优化策略。通过学习和实践这些实例,开发者可以更好地理解SOAP协议的工作原理,...
在Java WebService实例中,可能使用了如Apache CXF或Metro等JAX-WS实现框架。这些框架提供了额外的功能,如自动WSDL生成、更高级的异常处理和拦截器等。 5. **安全考虑** 发布Web服务时,安全性是重要的一环。...