<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Believe it,do it!

    Ideal is the beacon. Without ideal, there is no secure direction; without direction ,there is no life.
    理想是指路明燈。沒有理想,就沒有堅定的方向;沒有方向,就沒有生活。
    CTRL+T eclipse
    posts - 35, comments - 3, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    用JAVA調用.net的webservice實例

    Posted on 2009-05-18 13:57 三羽 閱讀(2109) 評論(0)  編輯  收藏 所屬分類: JAVA資料
     首先登錄www.wopos.com/webservice/Weather.asmx?op=getWeather。可以看到如下的SOAP信息 
    請求:
    以下內容為程序代碼:

    POST /webservice/Weather.asmx http/1.1
    Host: www.wopos.com
    Content-Type: text/xml; charset=utf-8
    Content-Length: length
    SOAPAction: "http://tempuri.org/getWeather"

    <?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://tempuri.org/">
          <mCity>string</mCity>
        </getWeather>
      </soap:Body>
    </soap:Envelope>

    把XML部分全部復制下來創建一個XML文件(普通的文本文件也可以),為了以后編程方面,把
    以下內容為程序代碼:

                           ...
          <mCity>string</mCity> 
                           ...

    改成
    以下內容為程序代碼:

                          ...
          <mCity>${city}$</mCity> 
                           ...

    以weathersoap.xml保存在以后生成的類的同一目錄。

    響應:
    以下內容為程序代碼:

    http/1.1 200 OK
    Content-Type: text/xml; charset=utf-8
    Content-Length: length

    <?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="h ttp://www.w3.org/2001/XMLSchema" xmlns:soap="h ttp://schemas.xmlsoap.org/soap/envelope/">
      <soap:Body>
        <getWeatherResponse xmlns="h ttp://tempuri.org/">
          <getWeatherResult>string</getWeatherResult>
        </getWeatherResponse>
      </soap:Body>
    </soap:Envelope>

    在后面對XML的解釋要用到響應部分的XML描述


            接下就開始寫代碼了。
    以下內容為程序代碼:

    package jaqcy.weatherreport.client;

    import java.io.*;
    import java.net.*;
    import javax.xml.parsers.*;
    import org.w3c.dom.*;
    /**
     *
     * @author jaqcy
     */
    public class WeatherReport 
    {    
        private static String getSoapRequest(String city)//city為要查詢天氣的城市名
        {
            try 
            {
                Class cls=Object.class;
                InputStreamReader isr=new InputStreamReader(cls.getResourceAsStream("/jaqcy/weatherreport/client/weathersoap.xml"));//讀取存在weathersoap的SOAP信息
                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);//用傳入的參數city替換原來的${city}$
            } 
            catch (Exception ex) 
            {
                ex.printStackTrace();
                return null;
            }
        }
      /*
        *返回InputStream是因為w3c DOM中Document的parse方法可
        *以接受InputStream類型的參數,方面在下一步對XML的解釋
        */
        private static InputStream getSoapInputStream(String city)throws Exception
        {
            try
            {
                String soap=getSoapRequest(city);
                if(soap==null)
                {
                    return null;
                }
                URL url=new URL("http://www.wopos.com/webservice/Weather.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://tempuri.org/getWeather\"");

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

                InputStream is=conn.getInputStream();            
                return is;   
            }
            catch(Exception e)
            {
                e.printStackTrace();
                return null;
            }
        }
    /*
      *用W3C DOM對返回的XML進行解釋
      *
      */
        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("getWeatherResult");
                Node n=nl.item(0);
                String weather=n.getFirstChild().getNodeValue();
                is.close();
                return weather;
            }
            catch(Exception e)
            {
                e.printStackTrace();
                return null;
            }
        }
    }

    寫個main方法檢驗一下結果
    以下內容為程序代碼:


        public static void main(String[] args)throws Exception
        {
            System.out.println(WeatherReport.getWeather("珠海"));
        }

    結果如下
    以下內容為程序代碼:

    城市==珠海,日期==4.02-4.03,圖1==http://weather.tq121.com.cn/images/a1.gif,圖2==http://weather.tq121.com.cn/images/00.gif,天氣==多云,溫度==28℃~22℃,風==微風,紫外線==弱
    主站蜘蛛池模板: 久久狠狠爱亚洲综合影院| 亚洲无人区一区二区三区| 免费国产黄线在线观看| 久久久亚洲精品视频| 中文字幕免费在线观看动作大片| 久久久久免费看黄a级试看| 亚洲日韩精品无码专区网址| 久青草国产免费观看| 亚洲av日韩片在线观看| 一区二区免费在线观看| 国产日韩成人亚洲丁香婷婷| 亚洲综合久久一本伊伊区| 国产va免费精品观看精品| 男人天堂2018亚洲男人天堂| 大学生一级特黄的免费大片视频 | 日本黄页网站免费| 亚洲精品无码专区久久| 国产成人免费永久播放视频平台| 亚洲男人都懂得羞羞网站| 免费观看无遮挡www的视频| 激情综合色五月丁香六月亚洲| 久久精品国产亚洲av麻豆图片| 最近免费字幕中文大全| 情人伊人久久综合亚洲| 国产精品成人亚洲| 亚洲熟妇少妇任你躁在线观看无码 | 好爽好紧好大的免费视频国产| 亚洲AV无码一区二区二三区软件| 黑人粗长大战亚洲女2021国产精品成人免费视频 | 亚洲人成网站色在线观看| 日韩精品内射视频免费观看| 亚洲白色白色永久观看| 成年美女黄网站18禁免费| 亚洲av成人无码久久精品 | 全部免费毛片在线| 免费毛片a线观看| 国产成+人+综合+亚洲专| 国产精品99久久免费观看| 久久久久亚洲爆乳少妇无| 朝桐光亚洲专区在线中文字幕| 午夜一区二区免费视频|