明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

股票報(bào)價(jià)的WebService(轉(zhuǎn)天極網(wǎng))之一

[摘要]Web Services,即Web服務(wù),是微軟.NET戰(zhàn)略中非常重要的一個(gè)概念。它的目的是將Web站點(diǎn)轉(zhuǎn)變?yōu)榧M織、應(yīng)用、服務(wù)以及設(shè)備于一體的可設(shè)計(jì)Web站點(diǎn),使Web站點(diǎn)不再處于被動(dòng)的地位。<...
Web Services,即Web服務(wù),是微軟.NET戰(zhàn)略中非常重要的一個(gè)概念。它的目的是將Web站點(diǎn)轉(zhuǎn)變?yōu)榧M織、應(yīng)用、服務(wù)以及設(shè)備于一體的可設(shè)計(jì)Web站點(diǎn),使Web站點(diǎn)不再處于被動(dòng)的地位。<br>
<br>
  本文將介紹如何建立和使用一個(gè)在.NET 平臺(tái)上提供股票報(bào)價(jià)的Web服務(wù)。我們將使用Yahoo的一項(xiàng)以CSV(以逗號(hào)分隔的值)的格式提供股票報(bào)價(jià)的免費(fèi)服務(wù),將其包含在我們的web 服務(wù)中。<br>
<br>
  注意:這個(gè)報(bào)價(jià)服務(wù)例程的運(yùn)行大約延遲15分鐘,只用于教學(xué)目的。 <br>
<br>
  建立Web服務(wù)<br>
<br>
  下面將采用逐步講解代碼的形式來幫助你理解在.NET 中Web服務(wù)的編程模式。我們可以使用notepad等任何文本編輯器來編寫 這里的Web服務(wù)例程代碼,最后將文件存儲(chǔ)為StockQuote.asmx。請(qǐng)注意:所有的Web服務(wù)文件保存時(shí)都使用擴(kuò)展名 *.asmx。<br>
<br>
  <%@ WebService Language=&quot;C#&quot; class=&quot;DailyStock&quot; %><br>
<br>
代碼的第一行定義了一個(gè) Web 服務(wù),使用的語言是C#。class屬性用來指示W(wǎng)eb服務(wù)應(yīng)該調(diào)用和使用的類。如果在Web服務(wù)中使用了許多類,那么就應(yīng)該用這個(gè)屬性來表明Web服務(wù)應(yīng)該首先調(diào)用的類。<br>
<br>
  using System ;<br>
  using System.Web.Services ;<br>
  using System.Net ;<br>
  using System.IO ;<br>
  using System.Text ;<br>
<br>
以上代碼負(fù)責(zé)引入必要的名稱空間。 請(qǐng)記住永遠(yuǎn)都要引入System.Web.Services這個(gè)名稱空間 。根據(jù)類的需要,再引入保留的名稱空間。 <br>
<br>
  public class DailyStock : WebService<br>
   {<br>
    ......<br>
    ....<br>
   }<br>
<br>
這里我們將公共類定義為 DailyStock,它擴(kuò)展了 System.Web.Services.WebService 類。所有想暴露為 Web服務(wù)的類都應(yīng)該擴(kuò)展System.Web.Services.WebServices類。 另外,Web 服務(wù)的存取修飾語永遠(yuǎn)都是public。<br>
<br>
  [WebMethod]<br>
   public string GetQuote(string symbol)<br>
   {<br>
    ........<br>
    ........<br>
   }<br>
<br>
以上我們定義了一個(gè)公共Web方法 GetQuote。同類的定義一樣,Web 方法也都要用 public這個(gè)修飾語來聲明。 [WebMethod] 屬性呈現(xiàn)出將要被用在Web服務(wù)中的一些潛在方法,希望客戶存取的所有方法都應(yīng)該用[WebMethod] 屬性進(jìn)行標(biāo)記。GetQuote方法接受一個(gè)字符串輸入?yún)?shù),它包含了使用者所需要的報(bào)價(jià)符號(hào)。這個(gè)方法返回一個(gè)字符串,其中包含股票報(bào)價(jià)或錯(cuò)誤信息。 <br>
<br>
  string ret;<br>
   try<br>
    {<br>
     // The Path to the Yahoo Quotes Service<br>
     string fullpath = @&quot;http://quote.yahoo.com/d/quotes.csv?s=&quot;+symbol+&quot;&f=sl1d1t1c1ohgvj1pp2owern&e=.csv&quot;; <br>
<br>
     // Create a HttpWebRequest object on the Yahoo url<br>
<br>
     HttpWebRequest webreq = (HttpWebRequest)WebRequestFactory.Create(fullpath);<br>
<br>
     // Get a HttpWebResponse object from the Yahoo url<br>
<br>
     HttpWebResponse webresp = (HttpWebResponse)webreq.GetResponse();<br>
<br>
     // Create a StreamReader object and pass the Yahoo Server stream as a parameter<br>
<br>
     StreamReader strm = new StreamReader(webresp.GetResponseStream(), Encoding.ASCII);<br>
<br>
     // Read a single line from the stream (from the server) <br>
     // We read only a single line, since the Yahoo server returns all the<br>
     // information needed by us in just one line.<br>
<br>
     ret= strm.ReadLine();<br>
<br>
     // Close the stream to the server and free the resources.<br>
<br>
     strm.Close();<br>
<br>
    }<br>
<br>
   catch(Exception)<br>
<br>
   {<br>
<br>
    // If exception occurred inform the user<br>
<br>
    ret=&quot;Exception Occurred&quot; ;<br>
<br>
   }<br>
<br>
   file://Return the Quote or Exception<br>
<br>
   return ret ;<br>
<br>
  以上是GetQuote 方法的內(nèi)容。這里使用一個(gè) try-catch模塊來截獲從Yahoo中得到股票報(bào)價(jià)的過程中可能發(fā)生的錯(cuò)誤。在 try-catch模塊內(nèi)部聲明了一個(gè)字符串變量,這個(gè)變量中保存著獲取yahoo服務(wù)的完整路徑,用戶提供的symbol字符串變量被加到這個(gè)連接字符串上。<br>
<br>
  路徑建立好之后,就要從連接字符串中構(gòu)造一個(gè) HttpWebRequest對(duì)象和一個(gè) HttpWebResponse 對(duì)象。接著,用StreamReader打開一個(gè)到Y(jié)ahoo服務(wù)器的流。StreamReader 從服務(wù)器中讀取一行, Yahoo提供給我們所需要的信息都是一行一行的。最后,流被關(guān)閉,Yahoo的輸出信息返回給用戶。&nbsp;