1. 程式人生 > >WebService學習總結(四)——呼叫第三方提供的webService服務

WebService學習總結(四)——呼叫第三方提供的webService服務

網際網路上面有很多的免費webService服務,我們可以呼叫這些免費的WebService服務,將一些其他網站的內容資訊整合到我們的Web應用中顯示,下面就以獲取天氣預報資料和查詢國內手機號碼歸屬地為例進行說明。

  氣象中心的管理系統將收集的天氣資訊並將資料暴露出來(通過WebService Server), 而各大站點的應用就去呼叫它們得到天氣資訊並以不同的樣式去展示(WebService Client).

一、 呼叫免費的web service獲取天氣預報資訊

1.1、找到提供天氣預報資訊的Webservice的網路地址

  

  

1.2、客戶端編碼方式訪問第三方提供的webService服務

  1、藉助wsimport命令工具自動生成客戶端程式碼

  建立一個測試專案,如下:

  

  

  執行結果顯示,使用wsimport工具直接生成客戶端程式碼會拋異常, 無法生成客戶端程式碼, 只是因為我們要呼叫的WebService是用.net寫的,這個是Java呼叫net的webservice都有的問題,這個問題的解決辦法如下:

  1. 將對應的wsdl文件儲存到本地

  

  2、修改wsdl文件的部分內容: <s:element ref="s:schema" /><s:any /> 替換成 <s:any minOccurs="2" maxOccurs="2"/>

  

  再次執行wsimport生成程式碼,這次使用儲存在本地的WeatherWS.wsdl檔案來進行生成,如下圖所示:

  

  從執行結果顯示,這一次可以正常生成程式碼了,重新整理一下src目錄,就可以看到生成的程式碼了,如下圖所示:

  

2、藉助生成的程式碼編寫請求程式碼

複製程式碼
 1 package me.gacl.ws.client;
 2 
 3 import java.util.List;
 4 
 5 import cn.com.webxml.ArrayOfString;
 6 import cn.com.webxml.WeatherWS;
 7 import cn.com.webxml.WeatherWSSoap;
8 9 public class WeatherWSClient { 10 11 public static void main(String[] args) { 12 //建立一個WeatherWS工廠 13 WeatherWS factory = new WeatherWS(); 14 //根據工廠建立一個WeatherWSSoap物件 15 WeatherWSSoap weatherWSSoap = factory.getWeatherWSSoap(); 16 //呼叫WebService提供的getWeather方法獲取南寧市的天氣預報情況 17 ArrayOfString weatherInfo = weatherWSSoap.getWeather("南寧", null); 18 List<String> lstWeatherInfo = weatherInfo.getString(); 19 //遍歷天氣預報資訊 20 for (String string : lstWeatherInfo) { 21 System.out.println(string); 22 System.out.println("------------------------"); 23 } 24 } 25 }
複製程式碼

  訪問結果如下:

複製程式碼
廣西 南寧
------------------------
南寧
------------------------
2391
------------------------
2015/01/29 19:00:49
------------------------
今日天氣實況:暫無實況
------------------------
空氣質量:暫無;紫外線強度:最弱
------------------------
太陽鏡指數:不需要。白天光線弱不需要佩戴太陽鏡。
穿衣指數:較舒適。建議穿薄外套或牛仔褲等服裝。
旅遊指數:適宜。溫度適宜,可盡情享受大自然風光。
運動指數:較適宜。較適宜進行各種戶內外運動。
洗車指數:不宜。有雨,雨水和泥水會弄髒愛車。
化妝指數:保溼。請選用中性保溼型霜類化妝品。
感冒指數:較易發。天較涼,增加衣服,注意防護。
空氣汙染指數:暫無。
紫外線指數:最弱。輻射弱,塗擦SPF8-12防晒護膚品。
舒適度指數:舒適。白天不冷不熱,風力不大。

------------------------
1月29日 多雲
------------------------
11℃/15℃
------------------------
東北風微風
------------------------
1.gif
------------------------
1.gif
------------------------
1月30日 小雨轉陰
------------------------
10℃/15℃
------------------------
東北風微風
------------------------
7.gif
------------------------
2.gif
------------------------
1月31日 多雲
------------------------
11℃/13℃
------------------------
東北風微風
------------------------
1.gif
------------------------
1.gif
------------------------
2月1日 多雲
------------------------
12℃/17℃
------------------------
東北風微風
------------------------
1.gif
------------------------
1.gif
------------------------
2月2日 陰轉多雲
------------------------
13℃/18℃
------------------------
東北風微風
------------------------
2.gif
------------------------
1.gif
------------------------
複製程式碼

  這樣,我們通過生成的Client程式碼呼叫了第三方提供的webService服務獲取到了南寧市的天氣預報資訊。

二、 呼叫免費的web service查詢國內手機號碼歸屬地

2.1、找到提供服務的Webservice的網路地址

  

  

2.2、編寫客戶端訪問呼叫WebService服務

1、建立客戶端專案

  

2、根據WebService的wsdl描述生成客戶端程式碼

  

  這次可以直接使用wsdl生成程式碼,不再需要將wsdl檔案下載到本地進行修改了,這個WebService應該不是使用.net寫的,生成的程式碼如下:

  

  3、藉助生成的程式碼編寫請求程式碼

複製程式碼
 1 package me.gacl.ws.client;
 2 
 3 import cn.com.webxml.MobileCodeWS;
 4 import cn.com.webxml.MobileCodeWSSoap;
 5 
 6 public class PhoneWsClient {
 7 
 8     public static void main(String[] args) {
 9         //建立一個MobileCodeWS工廠
10         MobileCodeWS factory = new MobileCodeWS();
11         //根據工廠建立一個MobileCodeWSSoap物件
12         MobileCodeWSSoap mobileCodeWSSoap = factory.getMobileCodeWSSoap();
13         ////呼叫WebService提供的getMobileCodeInfo方法查詢手機號碼的歸屬地
14         String searchResult = mobileCodeWSSoap.getMobileCodeInfo("15177196635", null);
15         System.out.println(searchResult);
16     }
17 }
複製程式碼

  執行結果如下:
  

  這樣我們呼叫第三方提供的WebService服務成功查詢到了手機號碼的歸宿地。

  以上就是如何呼叫第三方WebService的相關內容。

相關推薦

WebService學習總結()——呼叫第三方提供webService服務

網際網路上面有很多的免費webService服務,我們可以呼叫這些免費的WebService服務,將一些其他網站的內容資訊整合到我們的Web應用中顯示,下面就以獲取天氣預報資料和查詢國內手機號碼歸屬地為例進行說明。   氣象中心的管理系統將收集的天氣資訊並將資料暴露出來

WebService學習總結(三)——呼叫第三方提供webService服務

網際網路上面有很多的免費webService服務,我們可以呼叫這些免費的WebService服務,將一些其他網站的內容資訊整合到我們的Web應用中顯示,下面就以獲取天氣預報資料和查詢國內手機號碼歸屬地為例進行說明。   氣象中心的管理系統將收集的天氣資訊並將資料暴露出來

WebService學習總結(五)——使用Myeclipse開發WebService(服務端/客戶端)

前言:朋友們開始以下教程前,請先看第五大點的注意事項,以避免不必要的重複操作。一、準備工作(以下為本例項使用工具)1、MyEclipse10.7.12、JDK 1.6.0_22二、建立服務端1、建立【Web Service Project】,命名為【TheService】。 

webservice學習總結(一)-- WebService相關概念介紹

IT strong 資源 fire 求和 log AC service服務 為什麽 一、WebService是什麽? 基於Web的服務:服務器端整出一些資源讓客戶端應用訪問(獲取數據) 一個跨語言、跨平臺的規範(抽象) 多個跨平臺、跨語言的應用間通信整合的方案(實際)

webservice學習筆記():監聽請求-使用Eclipse下的TCP_IP工具

監聽請求:使用Eclipse的Tcp/Ip工具(埠轉發): 1.配置eclipse的Tcp/Ip,並啟動監聽 eclipse>windows>perferences>搜尋框輸入tcp即可看到Tcp/Ip Moniter選項>配置如下,Local monitoring

CXF WebService 學習總結

一、需要的引入的jar包(具體存在了百度雲裡面) 二、web.xml配置 1、引入cxf-servlet.xml檔案 具體寫法如下: <web-app> <context-param>       <param

WebService學習總結 三 利用本地wsdl文件生成客戶端程式碼和TCP/IP工具監聽請求

一 利用本地文件生成客戶端程式碼: 之前都是利用網路上的wsdl文件生成客戶端程式碼,現狀可以先訪問網路上的wsdl文件,再把文件儲存到本地,使用 wsimport -keep 本地wsdl文件路徑,來生成客戶端程式碼。 例如 wsimport -keep D:\java\

WebService學習筆記()

一 soap訊息的格式 二 soap訊息的建立 java程式碼: //1、建立訊息工廠 MessageFactory factory = MessageFactory.newInstance(); //2、根據訊息工廠建立SoapMessage

Orleans學習總結()--集群配置篇

pan aging 方式 ddr sts system slist globals ica 上篇我們講了Orleans學習總結(三)--持久化篇,這一篇我們來說說集群配置,畢竟這個才是Orleans的看家本領 Orleans支持熱起動,支持自動節點發現,能夠斷線重發等一系列

javaweb學習總結() - - http協議

upn pen nsh exc ttf 請求 tls spi ttl 一、什麽是HTTP協議   HTTP是hypertext transfer protocol(超文本傳輸協議)的簡寫,它是TCP/IP協議的一個應用層協議,用於定義WEB瀏覽器與WEB服務器之間交換數據的

Maven學習總結()——Maven核心概念

pbm true 遠程倉庫 vc6 orm 復制代碼 lean 其它 filesize 一、Maven坐標 1.1、什麽是坐標?   在平面幾何中坐標(x,y)可以標識平面中唯一的一點。 1.2、Maven坐標主要組成 groupId:組織標識(包

Servlet3.0學習總結()——使用註解標註監聽器(Listener)

Servlet3.0提供@WebListener註解將一個實現了特定監聽器介面的類定義為監聽器,這樣我們在web應用中使用監聽器時,也不再需要在web.xml檔案中配置監聽器的相關描述資訊了。   下面我們來建立一個監聽器,體驗一下使用@WebListener註解標註監聽器,如下所示:

Mybatis學習總結之基於註解的單表CRUD操作

先認識一下註解概念: 定義:註解(Annotation),也叫元資料。一種程式碼級別的說明。它是JDK1.5及以後版本引入的一個特性,與類、介面、列舉是在同一個層次。它可以宣告在包、類、欄位、方法、區域性變數、方法引數等的前面,用來對這些元素進行說明,註釋。 作用分類: ①編寫文件:通過

docker學習總結

1. 建立容器 $ docker create -it ubuntu:latest2. 啟動容器$ docker start 容器ID3. 新建並啟動容器$ docker run -it ubuntu:16.04 /bin/bash4. 守護態執行$ docker run -d ubuntu /bin/sh

Python學習總結()——常見內建函式(Built-in Functions)

 國慶期間下定決心打算學習Python,於是下載安裝了開發環境。然後問題就來了,怎麼開始呢?糾結一番,還是從官方幫助文件開始吧。可是全是英文啊,英語渣怎麼破?那就邊翻譯邊看邊實踐著做吧(順便吐槽下百度翻譯,同樣的語句百度翻譯出來的結果和谷歌翻譯出來的結果差的不是一丟丟)。

WebService學習(二):建個簡單的webservice服務端和客戶端,順便測試一下

程式碼很簡單,直接如下: 該demo下載地址為: https://download.csdn.net/download/shenhaiyushitiaoyu/10801668 程式碼部分 //介面 package com.fei.demo.inter; pub

WebService學習(一): 按照步驟看懂WebService的wsdl(或xml)檔案

前言:WebService的學習並不是專案中使用到的,只不過是今天一個朋友諮詢我關於WebService的一些知識,雖然之前對WebService有一些瞭解,但當時看了不少文章都無法理解,畢竟沒有實質性的事,只是單獨學習的話,效率會很慢,所以今天趁著朋友諮詢我,本著有問必答的態度,突然間就對

javaweb學習總結(十一)——Apache的DBUtils框架學習

一、commons-dbutils簡介    commons-dbutils 是 Apache 組織提供的一個開源 JDBC工具類庫,它是對JDBC的簡單封裝,學習成本極低,並且使用dbutils能極大簡化jdbc編碼的工作量,同時也不會影響程式的效能。因此dbutils成為很多不喜歡hibernate的公

JavaScript學習總結()——邏輯OR運算符詳解

ots lpad letter center obj pbc ron 都是 false   在JavaScript中,邏輯OR運算符用||表示 1 var bTrue = true; 2 var bFalse = false; 3 var bResult = bTrue

vue學習總結()

一.Vue Router路由管理器的使用 案例效果: 一.使用步驟: 定義一個html結構: <div id="app"> <!-- 入口:使用router-link元件來導航,它會解析為a標籤 --> <rou