天氣預報webserviceweb service實作天氣預報的詳細步驟
天氣預報webservice 時間:2021-06-03 閱讀:()
webservice簡單說, WebService就是一些站點開放一些服務出來, 也可以是你自己開發的Service, 也就是一些方法, 通過URL,指定某一個方法名,送出請求,站點裡的這個服務(方法),接到你的請求,根據傳過來的參數,做一些處理, 然後把處理後的結果以XML形式傳回來給你,你的程式就解析這些XML資料,然後顯示出來或做其它操作.
舉個例子: 很多大的站點提供有天氣預報的WebService,隻要你送出請求過來,它就傳回天氣預報的資料,然後你把結果顯示在自己的程式上.
什麼是webservice 能否舉個通俗易懂的例子啊
表面上看,Web service 就是一個應用程式,它向外界暴露出一個能夠通過Web進行調用的API。
這就是說,你能夠通過Web來調用這個應用程式。
WebService的定義是什麼?你想了解什麼?Web Service是一種基于SOAP協定的技術,中文名稱是“Web服務”,您可以使用Web Service建立自定義的方法,Web Service現如今被廣泛應用,如:您需要去調用某個網站的天氣預報,如果對方的網站支援Web Service,您就可以自己用程式設計的方式去調用它的方法,進而獲得天氣資訊,Web Service的優點是可以實作跨平台調用,也就是說您使用Java建立的Web Service可以在.Net裡面建立方法直接調用,非常友善,著名的有亞馬遜的EC2平台,您可以利用該網站的Web Service調用該網站的所有的産品資訊,進而達到資訊分享!而且Web Service是以XML方式傳送資料的,是以傳輸速度非常快速!如果您想了解更多請繼續提問!互相交流學習!
android怎麼通路天氣webservice,用網上找的連結都不行WebService是一種基于SOAP協定的遠端調用标準,通過webservice可以将不同作業系統平台、不同語言、不同技術整合到一塊。
在Android SDK中并沒有提供調用WebService的庫,是以,需要使用第三方的SDK來調用WebService。
PC版本的WEbservice用戶端庫非常豐富,例如Axis2,CXF等,但這些開發包對于Android系統過于龐大,也未必很容易移植到Android系統中。
是以,這些開發包并不是在我們的考慮範圍内。
适合手機的WebService用戶端的SDK有一些,比較常用的有Ksoap2,可以從/p/ksoap2-android/downloads/list進行下載下傳;将下載下傳的ksoap2-android-assembly-2.4-jar-with-dependencies.jar包複制到Eclipse工程的lib目錄中,當然也可以放在其他的目錄裡。
同時在Eclipse工程中引用這個jar包。
具體調用調用webservice的方法為:
(1) 指定webservice的命名空間和調用的方法名,如:
SoapObject request =new SoapObject(http://service,”getName”);
SoapObject類的第一個參數表示WebService的命名空間,可以從WSDL文檔中找到WebService的命名空間。
第二個參數表示要調用的WebService方法名。
(2) 設定調用方法的參數值,如果沒有參數,可以省略,設定方法的參數值的代碼如下:
Request.addProperty(“param1”,”value”);
Request.addProperty(“param2”,”value”);
要注意的是,addProperty方法的第1個參數雖然表示調用方法的參數名,但該參數值并不一定與服務端的WebService類中的方法參數名一緻,隻要設定參數的順序一緻即可。
(3) 生成調用Webservice方法的SOAP請求資訊。
該資訊由SoapSerializationEnvelope對象描述,代碼為:
SoapSerializationEnvelope envelope=new
SoapSerializationEnvelope(SoapEnvelope.VER11);
Envelope.bodyOut = request;
建立SoapSerializationEnvelope對象時需要通過SoapSerializationEnvelope類的構造方法設定SOAP協定的版本号。
該版本号需要根據服務端WebService的版本号設定。
在建立SoapSerializationEnvelope對象後,不要忘了設定SOAPSoapSerializationEnvelope類的bodyOut屬性,該屬性的值就是在第一步建立的SoapObject對象。
(4) 建立HttpTransportsSE對象。
通過HttpTransportsSE類的構造方法可以指定WebService的WSDL文檔的URL:
HttpTransportSE ht=new HttpTransportSE(“http://192.168.18.17:80
/axis2/service/SearchNewsService?wsdl”);
(5)使用call方法調用WebService方法,代碼:
ht.call(null,envelope);
Call方法的第一個參數一般為null,第2個參數就是在第3步建立的SoapSerializationEnvelope對象。
(6)使用getResponse方法獲得WebService方法的傳回結果,代碼:
SoapObject soapObject =( SoapObject) envelope.getResponse();
以下為簡單的實作一個天氣檢視功能的例子:
lass WebService extends Activity {
privatestaticfinal String NAMESPACE ="/";
// WebService位址
privatestatic String URL ="/
webservices/weatherwebservice.asmx";
privatestaticfinal String METHOD_NAME ="getWeatherbyCityName";
privatestatic String SOAP_ACTION ="/
getWeatherbyCityName";
private String weatherToday;
private Button okButton;
private SoapObject detail;
@Override
publicvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
okButton = (Button) findViewById(R.id.ok);
okButton.setOnClickListener(new Button.OnClickListener() {
publicvoid onClick(View v) {
showWeather();
}
});
}
privatevoid showWeather() {
String city ="武漢";
getWeather(city);
}
@SuppressWarnings("deprecation")
publicvoid getWeather(String cityName) {
try {
System.out.println("rpc------");
SoapObject rpc =new SoapObject(NAMESPACE, METHOD_NAME);
System.out.println("rpc"+ rpc);
System.out.println("cityName is "+ cityName);
rpc.addProperty("theCityName", cityName);
AndroidHttpTransport ht =new AndroidHttpTransport(URL);
ht.debug =true;
SoapSerializationEnvelope envelope =new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.bodyOut = rpc;
envelope.dotNet =true;
envelope.setOutputSoapObject(rpc);
ht.call(SOAP_ACTION, envelope);
SoapObject result = (SoapObject) envelope.bodyIn;
detail = (SoapObject) result
.getProperty("getWeatherbyCityNameResult");
System.out.println("result"+ result);
System.out.println("detail"+ detail);
Toast.makeText(WebService.this, detail.toString(),
Toast.LENGTH_LONG).show();
parseWeather(detail);
return;
} catch (Exception e) {
e.printStackTrace();
}
}
privatevoid parseWeather(SoapObject detail)
throws UnsupportedEncodingException {
String date = detail.getProperty(6).toString();
weatherToday ="今天:"+ date.split("")[0];
weatherToday = weatherToday +"
天氣:"+ date.split("")[1];
weatherToday = weatherToday +"
氣溫:"
+ detail.getProperty(5).toString();
weatherToday = weatherToday +"
風力:"
+ detail.getProperty(7).toString() +"
";
System.out.println("weatherToday is "+ weatherToday);
Toast.makeText(WebService.this, weatherToday,
Toast.LENGTH_LONG).show();
}
}
web service實作天氣預報的詳細步驟<iframe allowtransparency="true" id="weather" scrolling="no" frame marginwidth="1" marginheight="1" height="250" width="700" src="/tb.q">
</iframe>
soso的
天氣預報webservice為你推薦
備案域名查詢 域名管理 網站備案域名查詢 廣州主機租用 免費linux主機 泛域名解析 如何注冊中文域名 購買域名和空間 google鏡像 plesk Dedicated permitrootlogin 60g硬碟 中國特價網 免費全能空間 元旦促銷 伺服器硬體防火牆 789 智能dns解析 美國鹽湖城 更多