`

Java 调用远程webservice接口实例(SOAP方式,DOM分析XML)

    博客分类:
  • java
阅读更多
package myweather;

import java.io.*;
import java.net.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
import javax.swing.JOptionPane;

public class MyWeather {
    private static String getSoapRequest(String city) {
     try {
     InputStreamReader isr = new InputStreamReader(new FileInputStream("weather.xml"));
     BufferedReader reader = new BufferedReader(isr);
     String soap = "";
     String tmp;
     while ((tmp = reader.readLine()) != null) {
      soap += tmp;
     }
     reader.close();
     isr.close();
     return soap.replace("${city}$", city);
     } catch (Exception ex) {
     ex.printStackTrace();
     return null;
     }
     }
     private static InputStream getSoapInputStream(String city)throws Exception
         {
             try
             {
                 String soap =getSoapRequest(city);
                 if(soap==null)
                 {
                     return null;
                 }
                 URL url=new URL("http://www.webxml.com.cn/WebServices/WeatherWebService.asmx");
                 URLConnection 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("SOAPAction","http://WebXml.com.cn/getWeatherbyCityName");

                 OutputStream os=conn.getOutputStream();
                 OutputStreamWriter osw=new OutputStreamWriter(os,"utf-8");
                 //osw.write(new String(soap.getBytes(),"utf-8"));
                 osw.write(soap);
                 osw.flush();
                 osw.close();

                 InputStream is=conn.getInputStream();
                 return is;
             }
             catch(Exception e)
             {
                 e.printStackTrace();
                 return null;
             }
    }
    public static String getWeather(String city)
   {
       try
       {
           Document doc;
           DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
           dbf.setNamespaceAware(true);
           DocumentBuilder db=dbf.newDocumentBuilder();
           InputStream is=getSoapInputStream(city);
           doc=db.parse(is);
           NodeList nl=doc.getElementsByTagName("getWeatherbyCityNameResult");
           Node n=nl.item(0);
           //JOptionPane.showMessageDialog(null,n.getChildNodes().getLength());
           for (int i=0;i<n.getChildNodes().getLength()-1;i++)
           {
             String weather=n.getChildNodes().item(i).getTextContent();
             System.out.print(weather);
           }
           is.close();
           return "null";
       }
       catch(Exception e)
       {
           e.printStackTrace();
           return null;
       }
   }
   public static void main (String [] args )throws Exception
   {
       //System.out.println(MyWeather.getWeather("上海"));
       MyWeather.getWeather("广州");
   }

}


//将以下XML保存为weather.xml

/*XML:<?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>
    <getWeatherbyCityName xmlns="http://WebXml.com.cn/">
      <theCityName>${city}$</theCityName>
    </getWeatherbyCityName>
</soap:Body>
</soap:Envelope>*/
2
1
分享到:
评论

相关推荐

    JAVA调用webservice并解析xml

    在IT行业中,调用Web服务并解析XML是常见的任务,特别是在Java开发中。Web服务,尤其是基于SOAP(Simple Object Access Protocol)的,提供了一种标准的跨平台、跨语言的数据交换方式。本教程将深入讲解如何在Java...

    webservice 调用实例soap协议

    在本实例中,我们将深入探讨如何使用SOAP协议进行Web服务调用,以及解析XML文档的过程。 首先,理解SOAP协议的关键在于其结构。一个SOAP消息通常包含三个主要部分:SOAP Envelope、SOAP Header和SOAP Body。SOAP ...

    Python调用WebService接口实例说明

    ### Python调用WebService接口实例说明 #### 背景与目的 在当今信息化时代,不同系统之间的通信变得越来越重要。为了实现系统间的高效交互,多种技术手段被开发出来,其中WebService作为一种常用的服务端口,提供了...

    java调用.net的WebService[借鉴].pdf

    - **动态生成代理类**:Java 使用 JAX-WS(Java API for XML Web Services)框架,可以自动生成调用 WebService 的代理类。通常,这一步可以通过命令行工具(如 wsimport)或者 IDE(如 Eclipse、IntelliJ IDEA)的...

    java 通过axis调用天气预报的webservice

    在Java中,调用WebService通常涉及以下步骤: 1. **了解WebService接口**:首先,你需要知道天气预报的WebService提供哪些功能,这通常可以通过查看其WSDL(Web服务描述语言)文档来实现。WSDL文件定义了服务的接口...

    Java访问.Net Webservice 通过httpclient SOAP实现

    首先,理解SOAP是一种基于XML的协议,用于在Web上交换结构化的和类型化的信息,特别适合于服务接口的远程调用。 Java访问.Net Webservice的过程大致分为以下步骤: 1. **创建SOAP请求**:首先,我们需要构建一个...

    Java开发WebService实例

    ### Java开发WebService实例详解 在IT领域,尤其是企业级应用开发中,WebService作为一种标准化的、跨平台的服务交互方式,被广泛应用于系统间的数据交换与服务调用。本文将基于给定的“Java开发WebService实例”...

    PB接口 调用webservice实例

    PB接口调用Web服务(Webservice)是一种在PowerBuilder(PB)应用程序中集成Web服务功能的方法,这在当今的分布式系统开发中非常常见。PowerBuilder 9(PB9)提供了强大的支持,允许开发者通过简单的API调用来访问和...

    ajax异步调用webservice实例

    总结,AJAX异步调用WebService是现代Web应用中常见的一种通信方式,它极大地提升了用户体验。理解并掌握这一技术,对于Web开发者来说至关重要。通过实际的代码示例和不断的实践,你可以更深入地理解和应用这个技术。

    java调用webservice的axis2.jar包

    Java调用WebService是Web服务交互的一种常见方式,而Axis2是一个高效的、可扩展的Web服务框架,它在Java世界中广泛用于创建和消费Web服务。本文将深入探讨使用Axis2.jar包来调用WebService的相关知识点。 一、Axis2...

    JAVA用WebService实现调用天气预报功能

    通过运行这个项目,我们可以看到如何实际操作这些步骤,实现从Java应用调用WebService获取天气预报数据的过程。 总的来说,这个项目展示了Java如何利用WebService技术实现跨系统的信息交互,特别是与中央气象台的...

    java axis调用第三方webservice程序demo

    在Java中使用Axis调用Webservice,首先需要引入必要的库文件。这些库通常包括axis.jar、axis-wsdl4j.jar、commons-discovery.jar、commons-logging.jar、jaxrpc.jar和wsdl4j.jar等。这些库包含了处理SOAP消息、解析...

    Java解析调用webservice服务的返回XML串详解

    在Java中,调用Web Service服务并解析返回的XML数据是一项常见的任务。Web Service通常以SOAP(Simple Object Access Protocol)消息的形式返回数据,这些消息包含了封装在XML结构中的业务信息。本篇将深入讲解如何...

    java asix调用webservice源码+jar包

    Java ASIX调用WebService是Java开发中的一项常见任务,它涉及到使用Java API来与Web服务进行交互。在本文中,我们将深入探讨这个主题,包括ASIX(可能指的是Axis,一个用于构建和部署Web服务的开源工具)在Java中的...

    JavaScript调用WebService实例总结

    JavaScript调用WebService是一种常见的在客户端与服务器之间进行数据交互的方式,尤其在Web应用程序中,它允许JavaScript代码直接访问Web服务提供的功能。以下是对这个实例的详细解析和相关知识点的总结: 1. ...

    Java访问WebService返回XML数据的方法

    Java访问WebService返回XML数据的方法是Java开发者在与Web服务交互时常见的需求,特别是当Web服务以XML格式提供数据时。本篇文章将详细讲解如何通过Java实现这一过程,并介绍相关的技术点。 首先,为了访问...

    Java 调用天气Webservice详解及实例代码

    Java 调用天气Webservice是Java开发中一个常见的任务,主要是通过网络接口获取特定城市的天气信息。在本文中,我们将深入探讨如何使用Java来调用天气Webservice,并提供一个具体的实例代码,帮助开发者理解这一过程...

    VC6调用WebService

    VC6中可以使用DOM(文档对象模型)或SAX(简单API for XML)库来处理XML。 7. **调试**:使用VC6的调试工具,如输出窗口和断点,对调用过程进行调试。也可以在Web Service端设置日志,以获取更详细的错误信息。 ...

    android 调用webservice 有源码+jar

    在Android中调用Webservice,通常使用SOAP协议封装请求和解析响应。SOAP消息以XML格式表示,包含四个主要部分:Envelope、Header、Body和Fault。 2. **Android HTTP通信** Android通过HttpURLConnection或...

    解析XML所需的jar dom.jar

    1. 加载XML文档:使用`javax.xml.parsers.DocumentBuilderFactory`类创建一个实例,并调用其`newDocumentBuilder()`方法生成`DocumentBuilder`对象。 2. 解析XML:使用`DocumentBuilder`对象的`parse()`方法读取XML...

Global site tag (gtag.js) - Google Analytics