使用XML-RPC來訪問Web服務

來源:互聯網
上載者:User
web|web服務|xml|訪問|來訪 <!--[if !supportLists]-->1.   <!--[endif]-->XML-RPC<!--[if !supportLists]-->a)        <!--[endif]-->原理:XML-RPC是以XML的方式來發送RPC調用,他使用HTTP作為傳輸協議,把需要發送的請求和請求的結果封裝到HTTP的訊息當中。由於RPC調用也是方法調用,只是被調用的一方不是在本地而已,雖然是這樣,但是不能改變的是調用的本質,對於調用方,他需要提供所調用的方法和方法的參數,而對於被呼叫者,她通過解釋調用方的請求,執行響應的調用,並將結果返回。這就是方法調用的本質。RPC只是在調用和返回之間增加了網路傳輸和編碼解碼部分,而XML-RPC則是規定了編碼和解碼必須使用XML格式,而網路傳輸必須使用HTTP協議,僅此而已。 <!--[if !supportLists]-->2.   <!--[endif]-->XML-RPC的請求和響應格式<!--[if !supportLists]-->a)        <!--[endif]-->請求:POST /rpchandler HTTP/1.0User-Agent: AcmeXMLRPC/1.0Host: xmlrpc.example.comContent-Type: text/xmlContent-Length: 165<?xml version="1.0"?><methodCall>     <methodName>getCapitalCity</methodName>     <params>         <param>              <value><string>England</string></value>         </param>     </params></methodCall> <!--[if !supportLists]-->b)        <!--[endif]-->響應:HTTP/1.1 200 OKDate: Sun, 29 Apr 2001 12:08:58 GMTServer: Apache/1.3.12 (Unix) Debian/GNU PHP/4.0.2Connection: closeContent-Type: text/xmlContent-length: 133<?xml version="1.0"?><methodResponse>     <params>         <param>              <value><string>Michigan</string></value>         </param>     </params></methodResponse> <!--[if !supportLists]-->c)        <!--[endif]-->錯誤:HTTP/1.1 200 OKDate: Sun, 29 Apr 2001 12:08:58 GMTServer: Apache/1.3.12 (Unix) Debian/GNU PHP/4.0.2Connection: closeContent-Type: text/xmlContent-length: 133<?xml version="1.0"?><methodResponse>     <fault>         <value>              <struct>                   <member>                       <name>faultCode</name>                       <value><int>802</int></value>                   </member>                   <member>                       <name>faultString</name>                       <value><string>Unknown country, 'Engand'.</string></value>                   </member>              </struct>         </value>     </fault></methodResponse> <!--[if !supportLists]-->3.   <!--[endif]-->XML-RPC執行個體<!--[if !supportLists]-->a)        <!--[endif]-->發送請求:<!--[if !supportLists]-->                      i.              <!--[endif]-->說明:使用XmlRpcClient可以發送請求,在請求當中我們需要提供所需要調用的方法名,以及方法參數,且參數需封裝到一個集合當中。<!--[if !supportLists]-->                   ii.              <!--[endif]-->代碼:XmlRpcClient client = new XmlRpcClient("http://127.0.0.1:6666");Vector<String> pars = new Vector<String>();pars.addElement("nick");Object result = client.execute("service.hello", pars);System.out.println("The Result is : " + result); <!--[if !supportLists]-->b)        <!--[endif]-->發布服務:<!--[if !supportLists]-->                      i.              <!--[endif]-->說明:通過WebServer我們可以很方便的發布服務。其中添加到addHandler()當中的執行個體就是服務體,而“service”就表示服務名稱。當請求到達時,他會根據請求的名稱與尋找服務體,然後在返回的執行個體上調用execute()方法。<!--[if !supportLists]-->                   ii.              <!--[endif]-->代碼:WebServer server = new WebServer(6666);server.addHandler("service", new Service());server.start(); public class Service implements XmlRpcHandler {     public Object execute(String methodName, Vector args) throws Exception {         if ("service.hello".equals(methodName)) {              return hello((String) args.get(0));         }         return "";     }     private String hello(String name) {         return "Hello " + name;     }}


相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。