股票報價的WebService(轉天極網)之一

來源:互聯網
上載者:User
web Web Services,即Web服務,是微軟.NET戰略中非常重要的一個概念。它的目的是將Web網站轉變為集組織、應用、服務以及裝置於一體的可設計Web網站,使Web網站不再處於被動的地位。<br>
<br>
  本文將介紹如何建立和使用一個在.NET 平台上提供股票報價的Web服務。我們將使用Yahoo的一項以CSV(以逗號分隔的值)的格式提供股票報價的免費服務,將其包含在我們的web 服務中。<br>
<br>
  注意:這個報價服務常式的運行大約延遲15分鐘,只用於教學目的。 <br>
<br>
  建立Web服務<br>
<br>
  下面將採用逐步講解代碼的形式來協助你理解在.NET 中Web服務的編程模式。我們可以使用notepad等任何文字編輯器來編寫 這裡的Web服務常式代碼,最後將檔案儲存體為StockQuote.asmx。請注意:所有的Web服務檔案儲存時都使用副檔名 *.asmx。<br>
<br>
  <%@ WebService Language="C#" class="DailyStock" %><br>
<br>
代碼的第一行定義了一個 Web 服務,使用的語言是C#。class屬性用來指示Web服務應該調用和使用的類。如果在Web服務中使用了許多類,那麼就應該用這個屬性來表明Web服務應該首先調用的類。<br>
<br>
  using System ;<br>
  using System.Web.Services ;<br>
  using System.Net ;<br>
  using System.IO ;<br>
  using System.Text ;<br>
<br>
以上代碼負責引入必要的名稱空間。 請記住永遠都要引入System.Web.Services這個名稱空間 。根據類的需要,再引入保留的名稱空間。 <br>
<br>
  public class DailyStock : WebService<br>
   {<br>
    ......<br>
    ....<br>
   }<br>
<br>
這裡我們將公用類定義為 DailyStock,它擴充了 System.Web.Services.WebService 類。所有想暴露為 Web服務的類都應該擴充System.Web.Services.WebServices類。 另外,Web 服務的存取修飾語永遠都是public。<br>
<br>
  [WebMethod]<br>
   public string GetQuote(string symbol)<br>
   {<br>
    ........<br>
    ........<br>
   }<br>
<br>
以上我們定義了一個公用Web方法 GetQuote。同類的定義一樣,Web 方法也都要用 public這個修飾語來聲明。 [WebMethod] 屬性呈現出將要被用在Web服務中的一些潛在方法,希望客戶存取的所有方法都應該用[WebMethod] 屬性進行標記。GetQuote方法接受一個字串輸入參數,它包含了使用者所需要的報價符號。這個方法返回一個字串,其中包含股票報價或錯誤資訊。 <br>
<br>
  string ret;<br>
   try<br>
    {<br>
     // The Path to the Yahoo Quotes Service<br>
     string fullpath = @"http://quote.yahoo.com/d/quotes.csv?s="+symbol+"&f=sl1d1t1c1ohgvj1pp2owern&e=.csv"; <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="Exception Occurred" ;<br>
<br>
   }<br>
<br>
   file://Return the Quote or Exception<br>
<br>
   return ret ;<br>
<br>
  以上是GetQuote 方法的內容。這裡使用一個 try-catch模組來截獲從Yahoo中得到股票報價的過程中可能發生的錯誤。在 try-catch模組內部聲明了一個字串變數,這個變數中儲存著擷取yahoo服務的完整路徑,使用者提供的symbol字串變數被加到這個連接字串上。<br>
<br>
  路徑建立好之後,就要從連接字串中構造一個 HttpWebRequest對象和一個 HttpWebResponse 對象。接著,用StreamReader開啟一個到Yahoo伺服器的流。StreamReader 從伺服器中讀取一行, Yahoo提供給我們所需要的資訊都是一行一行的。最後,流被關閉,Yahoo的輸出資訊返回給使用者。 

相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

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 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。