Java实现与调用Web Service

一. Web Service

1. web service

就是应用程序之间跨语言的调用

例如,天气预报Web Service:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx

2. wsdl: web service description language(web服务描述语言)

通过xml格式说明调用的地址方法如何调用,可以看作webservice的说明书

例如,天气预报的:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl

3. soap: simple object access protocol(简单对象访问协议)

soap 在http(因为有请求体,所以必须是post请求)的基础上传输xml数据
       请求和响应的xml 的格式如:

<Envelop>
                  <body>
                  //....
                   </body>
             </Envelop>

二. Java实现与调用Web Service

1. 目前来讲比较有名的webservice框架大致有四种JWS,Axis,XFire以及CXF。(服务端发布,客户端调用)

具体可以参考:JWS-webservice 与Axis2-webservice的快速实现

2. 通过URL Connection调用Webservice(客户端调用,这种方法太麻烦)

import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
/**
 * 通过UrlConnection调用Webservice服务
 *
 */
public class App {

    public static void main(String[] args) throws Exception {
        //服务的地址
        URL wsUrl = new URL("http://192.168.1.100:6789/hello");

        HttpURLConnection conn = (HttpURLConnection) wsUrl.openConnection();

        conn.setDoInput(true);
        conn.setDoOutput(true);
        conn.setRequestMethod("POST");
        conn.setRequestProperty("Content-Type", "text/xml;charset=UTF-8");

        OutputStream os = conn.getOutputStream();

        //请求体
        String soap = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:q0=\"http://ws.itcast.cn/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" +
                      "<soapenv:Body> <q0:sayHello><arg0>aaa</arg0>  </q0:sayHello> </soapenv:Body> </soapenv:Envelope>";

        os.write(soap.getBytes());

        InputStream is = conn.getInputStream();

        byte[] b = new byte[1024];
        int len = 0;
        String s = "";
        while((len = is.read(b)) != -1){
            String ss = new String(b,0,len,"UTF-8");
            s += ss;
        }
        System.out.println(s);

        is.close();
        os.close();
        conn.disconnect();
    }
}

3. 使用ksoap2 调用 WebService(客户端调用)

主要用于资源受限制的Java环境如Applets或J2ME应用程序以及Android等等(CLDC/ CDC/MIDP)。

具体可以参考:使用ksoap2 调用 WebService(实例:调用天气预报服务)

时间: 2024-10-18 14:40:35

Java实现与调用Web Service的相关文章

Java 调用Web service 添加认证头(soapenv:Header)

前言 有时候调用web service 会出现 Message does not conform to configured policy [ AuthenticationTokenPolicy(S) ]:  No Security Header found 这样的错误. 以在 soapui 调用的结果来看, 会出现如下的返回 出现这种错误的原因 是webservice 的服务端需要提供 soap 认证的表头. 举例来说, 可能需要加上如下的认证头: <soapenv:Header> <

JAVA 调用Web Service的方法(转载)

JAVA 调用Web Service的方法 1.使用HttpClient 用到的jar文件:commons-httpclient-3.1.jar 方法: 预先定义好Soap请求数据,可以借助于XMLSpy Professional软件来做这一步生成. String soapRequestData = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +     "<soap12:

Java 调用Web service 加入认证头(soapenv:Header)

前言 有时候调用web service 会出现 Message does not conform to configured policy [ AuthenticationTokenPolicy(S) ]:  No Security Header found 这种错误. 以在 soapui 调用的结果来看, 会出现例如以下的返回 出现这种错误的原因 是webservice 的服务端须要提供 soap 认证的表头. 举例来说. 可能须要加上例如以下的认证头: <soapenv:Header> &

C#使用SOAP调用Web Service

程序代码 using System;using System.IO;using System.Net;using System.Text; namespace ConsoleApplication1{ class Program    { static void Main(string[] args)        {            //构造soap请求信息            StringBuilder soap = new StringBuilder();            s

php5调用web service

工作中需要用php调用web service接口,对php不熟,上网搜搜,发现关于用php调用web service的文章也不多,不少还是php4里用nusoap这个模块调用的方法,其实php5里已经包含了处理soap的模块,但是资料太少了,上php官网上查帮助,写的不是很容易理解,经过多次实践,终于搞清楚了,php调用web service还是非常简单的.下面用一个例子说明: extension=php_openssl.dll extension=php_soap.dll php.ini 这2

Android调用web Service

---恢复内容开始--- 继总结过web service后,再总结一下android中使用web service. 在android中使用web service需要使用到一个第三方开源的类库——ksoap2.他是一个SOAP Web Service客户端开发包.是android平台上高效.轻量级的SOAP开发包. 使用SOAP需要引入第三方的jar包:ksoap2-android-assembly-2.5.4-jar-with-dependencies.jar.如何加入jar包就不在赘述.下面讲

通过ksoap2-android来调用Web Service操作的实例

import java.io.IOException; import org.ksoap2.SoapEnvelope;import org.ksoap2.serialization.SoapObject;import org.ksoap2.serialization.SoapSerializationEnvelope;import org.ksoap2.transport.HttpTransportSE;import org.xmlpull.v1.XmlPullParserException;

ORACLE存储过程调用Web Service

1. 概述 最近在ESB项目中,客户在各个系统之间的服务调用大多都是在oracle存储过程中进行的,本文就oracle存储过程调用web service来进行说明.其他主流数据库,比如mysql和sql service,调用web service的方法这里就不做介绍了,本文主要用来介绍oracle存储过程调用Web Service的方法. 众所周知,在Web Service通过HTTP协议发送请求和接收结果时,发送的请求内容和结果内容都采用XML格式封装,并增加了一些特定的HTTP消息头,以说明

php5调用web service (笔者测试成功)

转自:http://www.cnblogs.com/smallmuda/archive/2010/10/12/1848700.html 感谢作者分享 工作中需要用php调用web service接口,对php不熟,上网搜搜,发现关于用php调用web service的文章也不多,不少还是php4里用nusoap这个模块调用的方法,其实php5里已经包含了处理soap的模块,但是资料太少了,上php官网上查帮助,写的不是很容易理解,经过多次实践,终于搞清楚了,php调用web service还是非