zoukankan      html  css  js  c++  java
  • webService接口例子(转)

      1 package com.suneee.scn.tms.rest.impl;
      2 
      3 import org.dom4j.Document;
      4 import org.dom4j.Element;
      5 import org.dom4j.io.SAXReader;
      6 
      7 import java.io.InputStream;
      8 import java.io.OutputStream;
      9 import java.io.OutputStreamWriter;
     10 import java.net.URL;
     11 import java.net.URLConnection;
     12 import java.util.HashMap;
     13 import java.util.Iterator;
     14 import java.util.List;
     15 import java.util.Map;
     16 
     17 /**
     18  * 类作用调用webservice得到天气预报服务
     19  * @author qsw-Myonlystar 2010-1-13上午09:59:45
     20  */
     21 public class Weather {
     22     /**
     23      * 获取soap请求头,并替换其中的标志符号为用户的输入符号
     24      * @param city 用户输入城市名
     25      * @return 用户将要发送给服务器的soap请求
     26      */
     27     private static String getSoapRequest(String city) {
     28         StringBuilder sb = new StringBuilder();
     29         sb.append("<?xml version="1.0" encoding="utf-8"?>"
     30                 + "<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" "
     31                 + "xmlns:xsd="http://www.w3.org/2001/XMLSchema" "
     32                 + "xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">"
     33                 + "<soap:Body>    <getWeatherbyCityName xmlns="http://WebXml.com.cn/">"
     34                 + "<theCityName>" + city
     35                 + "</theCityName>    </getWeatherbyCityName>"
     36                 + "</soap:Body></soap:Envelope>");
     37         return sb.toString();
     38     }
     39     /**
     40      * 用户把SOAP请求发送给服务器端,并返回服务器点返回的输入流
     41      * @param city 用户输入的城市名称
     42      * @return 服务器端返回的输入流,供客户端读取
     43      * @throws Exception
     44      */
     45     public static InputStream getSoapInputStream(String city) throws Exception {
     46         try {
     47             String soap = getSoapRequest(city);
     48             if (soap == null) {
     49                 return null;
     50             }
     51             URL url = new URL(
     52                     "http://www.webxml.com.cn/WebServices/WeatherWebService.asmx");
     53             URLConnection conn = url.openConnection();
     54             conn.setUseCaches(false);
     55             conn.setDoInput(true);
     56             conn.setDoOutput(true);
     57             conn.setRequestProperty("Content-Length", Integer.toString(soap
     58                     .length()));
     59             conn.setRequestProperty("Content-Type", "text/xml; charset=utf-8");
     60             conn.setRequestProperty("SOAPAction",
     61                     "http://WebXml.com.cn/getWeatherbyCityName");
     62             OutputStream os = conn.getOutputStream();
     63             OutputStreamWriter osw = new OutputStreamWriter(os, "utf-8");
     64             osw.write(soap);
     65             osw.flush();
     66             osw.close();
     67             InputStream is = conn.getInputStream();
     68             //System.out.println(is.toString());
     69             return is;
     70         } catch (Exception e) {
     71             e.printStackTrace();
     72             return null;
     73         }
     74     }
     75     /**
     76      * 通过dom4j对服务器端返回的XML进行解析
     77      * @param city 用户输入的城市名称
     78      * @return 符串 用,分割
     79      */
     80     public static String getWeather(String city) {
     81         Document document=null;
     82         SAXReader reader = new SAXReader();
     83         String s="";
     84         Map map=new HashMap();
     85         map.put("design", "http://WebXml.com.cn/");
     86         reader.getDocumentFactory().setXPathNamespaceURIs(map);
     87         try {
     88             InputStream is = getSoapInputStream(city);//得到输入流
     89             document=reader.read(is);//将输入流转化为document
     90             String t =document.asXML();
     91             System.out.println(t);
     92         } catch (Exception e) {
     93             // TODO Auto-generated catch block
     94             e.printStackTrace();
     95         }
     96 
     97 
     98 
     99 /*        List nodes = document.selectNodes("//design:string");
    100         for (Iterator it = nodes.iterator(); it.hasNext();) {
    101             Element elm = (Element) it.next();
    102             String text=elm.getText();
    103             //System.out.println("fsffs"+text);
    104             s=s+elm.getText()+"
    ";
    105         }*/
    106         return s;
    107     }
    108     /**
    109      * 测试函数
    110      * @param args
    111      */
    112     public static void main(String args[]){
    113         Weather w=new Weather();
    114         System.out.println(w.getWeather("北京"));
    115     }
    116 }
  • 相关阅读:
    [LeetCode] Letter Combinations of a Phone Number
    [LeetCode] Combinations
    [Algorithms] Longest Increasing Subsequence
    2.Orange安装
    1.Orange是什么鬼?
    5.motan之注解方式配置
    4.motan之集群调用
    3.motan之异步调用
    2、motan入门程序
    1、微博RPC框架Motan
  • 原文地址:https://www.cnblogs.com/echo33/p/9493733.html
Copyright © 2011-2022 走看看