`
log_cd
  • 浏览: 1098407 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

以多种方式访问WebService

阅读更多
一、Java访问WebService
(1)使用Axis
import javax.xml.namespace.QName;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;

public class AxisWebService {

	public static void main(String[] args) {
		try {
			String endpoint = "http://www.webservicex.net/globalweather.asmx?WSDL";
			String nameSpace = "http://www.webserviceX.NET"; 
			
			Service service = new Service();
			
			Call call = (Call) service.createCall();
			call.setTargetEndpointAddress(endpoint);
			call.setOperationName(new QName(nameSpace, "GetWeather"));

			call.addParameter(new QName(nameSpace,"CityName"),
					org.apache.axis.encoding.XMLType.XSD_STRING,
					javax.xml.rpc.ParameterMode.IN);

			call.addParameter(new QName(nameSpace,"CountryName"),
					org.apache.axis.encoding.XMLType.XSD_STRING,
					javax.xml.rpc.ParameterMode.IN);			
			
			call.setUseSOAPAction(true);
			call.setReturnType(org.apache.axis.Constants.XSD_STRING);
			call.setSOAPActionURI("http://www.webserviceX.NET/GetWeather");
			String result = (String) call.invoke(new Object[] {"chengdu","china"});
			
			System.out.println(result);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

(2)使用XFire
import java.net.MalformedURLException;
import java.net.URL;

import org.codehaus.xfire.client.Client;
public class XFireWebService {

	public static String invokeService(){
		String endpoint = "http://www.webservicex.net/globalweather.asmx?WSDL";
		Client client = null;

		try{
			client = new Client(new URL(endpoint));
			Object[] result = client.invoke("GetWeather", new Object[] {"chengdu","china"});
			
			return (String)result[0];
		}catch(Exception e){
	
		}
		return "";
	}
	
	public static void main(String[] args) {
		System.out.println(XFireWebService.invokeService());
	}
}

二、js访问WebService
(1)使用ActiveXObject
	function requestByGet(){ 
		var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
		//Webservice location.
		var URL="http://www.webservicex.net/globalweather.asmx/GetWeather?CityName=chengdu&CountryName=china";
		xmlhttp.Open("GET",URL, false); 
		xmlhttp.SetRequestHeader ("Content-Type","text/xml; charset=utf-8"); 
		xmlhttp.SetRequestHeader ("SOAPAction","http://http://www.webserviceX.NET/GetWeather"); 
		xmlhttp.Send(null); 
		var result = xmlhttp.status; 
		//OK
		if(result==200) { 
			alert(xmlhttp.responseText); 
		} 
		xmlhttp = null; 
	} 

	function requestByPost(city,country){
		var data;
		data = '<?xml version="1.0" encoding="utf-8"?>'; 
		data = data + '<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/">'; 
		data = data + '<soap:Body>'; 
		data = data + '<GetWeather xmlns="http://www.webserviceX.NET">'; 
		data = data + '<CityName>'+city+'</CityName>'; 
		data = data + '<CountryName>'+country+'</CountryName>';
		data = data + '</GetWeather>'; 
		data = data + '</soap:Body>'; 
		data = data + '</soap:Envelope>'; 

		var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
		var URL="http://www.webservicex.net/globalweather.asmx";
		xmlhttp.Open("POST",URL, false); 
		xmlhttp.SetRequestHeader ("Content-Type","text/xml; charset=utf-8"); 
		xmlhttp.SetRequestHeader ("SOAPAction","http://www.webserviceX.NET/GetWeather"); 
		xmlhttp.Send(data); 
		alert( xmlhttp.responseText); 
	}

(2)使用jQuery的ajax
	$(function(){
		 $.ajax({
			type: "GET",//GET or POST
			url: "http://www.webservicex.net/globalweather.asmx/GetWeather", ////Webservice location
			data: {CityName: 'chengdu', CountryName: 'china'},
			dataType: "xml",
			
			success: function(data, textStatus){
				var xml = data.xml.replace(/&lt;/g,"<").replace(/&gt;/g,">");
				alert(xml);
				//alert($(xml).find("Status").length);

				alert($(xml).find("Temperature").eq(0).text());
				$(xml).find("Status").each(function(i,obj){
					//alert(obj.innerText);
					alert($(this).text());
				});
			},

			error:function(XMLHttpRequest, textStatus, errorThrown){
				alert(textStatus);
			}
		 });		
	
	});

三、在oracle中调用WebService
(1)使用UTL_HTTP
CREATE OR REPLACE FUNCTION TEST_GET_WEATHER(
       cityname  IN  VARCHAR2,
       countryname  IN  VARCHAR2
)RETURN VARCHAR2

AS
	env VARCHAR2(32767);
	http_req utl_http.req;
	http_resp utl_http.resp;
	return_value xmltype;
	error_value xmltype;
	error_code VARCHAR(256);
	error_string VARCHAR2(32767);

  result_string varchar2(32767);
BEGIN
	env := '<?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>
			<GetWeather xmlns="http://www.webserviceX.NET">
			  <CityName>' || cityname || '</CityName>
			  <CountryName>' || countryname || '</CountryName>
			</GetWeather>
		</soap:Body>
	</soap:Envelope>
	';

	http_req := utl_http.begin_request('http://www.webservicex.net/globalweather.asmx?WSDL', 'POST', 'HTTP/1.0');
	utl_http.set_header(http_req,'Content-Type','text/xml');
	utl_http.set_header(http_req,'Content-Length',length(env));
	utl_http.set_header(http_req,'SOAPAction','http://www.webserviceX.NET/GetWeather');
	utl_http.write_text(http_req,env);

	http_resp := utl_http.get_response(http_req);
	utl_http.read_text(http_resp,env);
	utl_http.end_response(http_resp);

	return_value := xmltype.createxml(env).extract('/soap:Envelope/soap:Body/child::node()','xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"');
	error_value := return_value.extract('/soap:Fault','xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"');

	if( error_value is not null) THEN
	    error_string := error_value.extract('/soap:Fault/faultstring/child::text()','xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"').getstringval();
	    error_code := error_value.extract('/soap:Fault/faultcode/child::text()','xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"').getstringval();

	    raise_application_error(-20000,'error in authentification: ' || error_string || ' - ' || error_code);
	end if;

	result_string := return_value.getStringVal();
  dbms_output.put_line(result_string);

  result_string := replace(result_string, '&lt;', '<');
  result_string := replace(result_string, '&gt;', '>');
  result_string := replace(result_string, '&quot;', '"');

  return result_string;  
  
END;

(2)使用UTL_DBWS
例子:Consuming Web Services in Oracle 10g
说明:oracle自己的例子成功了,调用GetWeather的WebService,没成功。
分享到:
评论

相关推荐

    Webservice创建,访问代码实例,多种方式实例

    本文将深入探讨如何创建和访问Web服务,以及使用多种方式实现这一过程。 1. **创建Web服务** - 使用ASP.NET Web Service(ASMX):这是最早的方式,通过创建一个.asmx文件,然后在其中定义一个或多个公共方法,...

    QT访问webService源码

    QT支持多种编程语言,包括C++,它为开发者提供了丰富的API来简化UI设计和系统交互。本文将深入探讨如何使用QT访问Web Service,特别是通过C++实现GET和POST请求。 首先,Web Service是一种基于网络的、可互操作的...

    用Java程序访问Net WebService.doc

    * Apache Axis:一个开源的WebService 服务器端框架,支持多种编程语言,包括 Java、C#、Python 等。 * J2EE 1.4 环境中直接把无状态 Session Bean(EJB2.1)发布为 WebService:在 J2EE 1.4 环境中,可以将无状态 ...

    Android通过WebService访问SQLServer

    4. **Android访问WebService**: 在Android端,我们可以使用`HttpURLConnection`或`HttpClient`类进行HTTP请求,但现代Android开发推荐使用`OkHttp`库。此外,对于SOAP WebService,我们可以使用`Ksoap2`库,它简化...

    android 访问webService Demo

    在这个“android 访问webService Demo”中,我们将探讨如何在Android应用中集成和使用Web Service,尤其适合初学者快速上手。 一、理解Web Service Web Service是一种跨平台的通信机制,它允许不同的应用程序通过...

    delphi XE5 ANDROID平台 调用 webservice并访问操作MSSQL数据库

    在服务端上,添加一个函数以访问操作 MSSQL 数据库。该函数使用 ADO 连接来连接 MSSQL 数据库,并执行 SQL 语句来获取数据。然后,将获取的数据转换为 XML 格式,并将其传递给客户端。 在客户端上,使用 THTTPRIO ...

    Spring 实现远程访问详解——webservice

    Spring Web Services 是基于 Spring 框架的 Web 服务框架,主要侧重于基于文档驱动的Web服务,提供 SOAP 服务开发,允许通过多种方式创建 Web 服务。本章利用Apache CXF构建和开发webservice. 1. webservice远程...

    Qt下gsoap访问webservice小程序

    安装过程中,通常包括编译源代码并配置环境变量,以便于在项目中引用gSOAP头文件和库文件。 接下来,我们需要生成gSOAP代码。这通常涉及以下步骤: 1. 使用gSOAP的`wsdl2h`工具从Web服务的WSDL(Web服务描述语言)...

    Soap方式调用WebService

    总结,SOAP方式调用WebService是分布式系统间通信的重要方式,理解其原理和实践方法对于开发和维护复杂的跨平台应用至关重要。在实际工作中,开发者需要根据项目需求选择合适的通信协议,并灵活运用各种工具和最佳...

    在Android中访问WebService接口

    在Android应用开发中,访问WebService接口是一种常见的通信方式。本文将详细介绍如何在Android应用程序中使用ksoap2库访问WebService,并通过一个具体的例子来演示整个过程。 #### 二、ksoap2简介 ksoap2是一个...

    vc6.0调用webservice的方法

    SOAP Toolkit是一个由Microsoft提供的开发工具包,它支持开发者创建、部署和访问SOAP-based WebService。对于VC6.0而言,安装SOAP Toolkit Version 3.0是必要的第一步,因为它提供了所需的库和工具。 2. **引入...

    四种方式调用webservice

    本文将详细介绍四种不同的方法来调用WebService,这些方法涵盖了多种编程环境和技术栈。 1. **VB调用** - **准备**:在Visual Basic (VB)环境中,调用WebService通常涉及到添加WebReference或者ServiceReference到...

    使用C#创建webservice及三种调用方式

    ### 使用C#创建WebService及三种调用方式 #### WebService简介 WebService是一种允许不同系统间进行数据交换和服务交互的技术标准,通常使用HTTP协议传输...此外,掌握多种调用方式对于处理复杂应用场景也非常有益。

    WebServiceStudio.zip

    WebService是一种基于Web的、平台无关的交互方式,它允许不同的应用程序之间进行数据交换和业务逻辑共享。WebService的核心技术是XML(可扩展标记语言)、SOAP(简单对象访问协议)、WSDL(Web服务描述语言)以及...

    PB 调用webservice 几种方式

    总之,PB 11.5提供了多种调用Web服务的方式,开发者可以根据项目需求和自身技能选择最适合的方法。理解并掌握这些方法,将有助于提升PB应用的扩展性和兼容性,使其能够充分利用Web服务提供的丰富功能。

    提高WebService速度方法

    本文将深入探讨如何优化这个过程,提升WebService的访问速度。 首先,我们要理解为什么Web Service首次访问慢。当客户端首次调用一个WebService时,由于.NET框架的Just-In-Time (JIT)编译机制,服务的代码会被转化...

    webservice

    - **WSDL (Web Services Description Language)**:是一种基于XML的语言,用于描述WebService的接口和绑定细节,包括服务提供的消息格式、所使用的协议和服务的访问地址等。 ##### 2.4 UDDI - **UDDI (Universal ...

    WebService开发客户端 cxf方式

    总结,使用CXF开发WebService客户端是Java开发者常用的一种方式,它简化了客户端的构建过程,提供了丰富的功能和良好的扩展性。通过理解WSDL、生成客户端代码、配置服务地址以及利用CXF的高级特性,可以高效地完成与...

    WebService二——使用Eclipse开发WebService及各种调用方式

    WebService是一种通过Web进行交互的应用程序,它使用XML(可扩展标记语言)作为数据格式,SOAP(简单对象访问协议)作为传输协议,WSDL(Web服务描述语言)来描述服务,UDDI(统一描述、发现和集成)用于服务的发布...

Global site tag (gtag.js) - Google Analytics