Java使用SOAP获取webservice实例解析

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] 点击前面的网址,查看对应参数信息。

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;
    }

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-08 08:16:12

Java使用SOAP获取webservice实例解析的相关文章

C#使用SOAP获取webservice实例解析

本文主要參考例如以下两个链接.并整理: Java使用SOAP: http://www.cnblogs.com/linjiqin/archive/2012/05/07/2488880.html C# send soap and get response: http://stackoverflow.com/questions/4791794/client-to-send-soap-request-and-received-response 1.webservice提供方:http://www.web

利用Java编写简单的WebService实例

使用Axis编写WebService比较简单,就我的理解,WebService的实现代码和编写Java代码其实没有什么区别,主要是将哪些Java类发布为WebService.下面是一个从编写测试例子到发布WebService,以及编写测试代码的过程介绍. 本例子的WebService提供了两个方法,分别是sayHello和sayHelloToPerson,第一个只是返回一个"Hello"字符串,没有参数,第二个函数接受一个字符串作为参数,返回"Hello 参数值",

java调用第三方的webservice应用实例

互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他网站的内容信息集成到我们的Web应用中显示. 一些常用的webservice网站的链接地址:         http://www.tuicool.com/articles/iIfqma 一:调用免费的web service获取天气预报信息 1.第三方服务地址 http://www.webxml.com.cn/WebServices/WeatherWebService.asmx http:/

Java中WebService实例

Web Services是由企业公布的完毕其特定商务需求的在线应用服务,其它公司或应用软件可以通过Internet来訪问并使用这项在线服务. Web Service的关键技术和规则: 1.XML:描写叙述数据的标准方法. 2.SOAP:表示信息交换的协议(简单对象訪问协议). 3.WSDL:Web服务描写叙述语言. 4.UDDI:通用描写叙述.发现与集成,他是一种独立于平台,基于XML语言的用于在互联网上描写叙述商务的协议. 一.利用JDK web服务api实现,这里使用基于SOAP messa

Java Class类以及获取Class实例的三种方式

T - 由此 Class 对象建模的类的类型.例如,String.class 的类型是Class<String>.如果将被建模的类未知,则使用Class<?>. [java] view plain copy print? public final class Class<T> extends Object  implements java.io.Serializable, java.lang.reflect.GenericDeclaration, java.lang.r

JAVA调用WebService实例

WebService是提供特定服务的架构技术,通过标准的Web协议提供服务,其目的是保证不同平台的应用服务可以相互操作.目前比较流行的实现是使用.NET和JAVA两种语言技术,并且两种实现语言可以相互操作: 下面主要围绕通过JAVA语言来介绍Webservice的定义和调用,通过JAVA语言开发WebService的方式又分为Axis.axis2.Xfire.CXF以及JWS.每种方式实现都有各自的特点,由于本人使用CXF的方式比较熟练,而且,CFX和Spring无缝结合,所以下面重点介绍以CF

java webservice实例教程

原文:java webservice实例教程 源代码下载地址:http://www.zuidaima.com/share/1590350954564608.htm 最近在学习web services,网上先关的资料不多,讲的都是很基础,例子也很简单,自己动手敲了敲在这里和大家分享一下,希望能对初学者有所帮助. Web Services服务器端开发 服务器端开发用的是XFire,版本是1.2.6,XFire现在已经成apache下面的一个项目CXF的一部分了,老早就不更新版本了,XFire过不过时

Java反射机制实例解析

1.获取想操作的访问类的java.lang.Class类的对象     2.调用Class对象的方法返回访问类的方法和属性信息     3.使用反射API来操作      每个类被加载后,系统会为该类生成一个对应的Class对象,通过该Class对象就可以访问到Java虚拟机中的这个类,Java程序中获取Class对象通常有如下三种方式: 1.调用某个对象的getClass()方法,是Object中的一个方法,所以所有类都可以调用这个方法 Person p= new Person(); Clas

java动态获取WebService的两种方式(复杂参数类型)

java动态获取WebService的两种方式(复杂参数类型) 第一种: @Override public OrderSearchListRes searchOrderList(Order_FlightOrderSearchRequest request) { Object myAllMessage; OrderSearchListRes response = null; try { String endpoint = carGlobalSetting.getEndpoint(); JaxWsD