2012-01-05 115 views
0

我剛剛開始在C#中編寫一個Class Library,它將執行獲取,發佈(Post和Get的Http請求)和oAuth(使用令牌邏輯的身份驗證方法)。什麼是擴展HttpWebRequest類的Lib的最佳方法?

目前,我和我的同事們寫的每個應用都有自己的「HttpMethods」類,它負責執行獲取和發佈。

這裏的一個簡單的例子得到我們有:

public string Get(string url, string refererPage = "") 
    { 
     string response = null; 

     try 
     { 
      // Web request 
      HttpWebRequest request    = (HttpWebRequest)WebRequest.Create(url); 
      request.Timeout      = m_timeout; 
      request.Method      = "GET"; 
      request.Referer      = refererPage; 
      request.CookieContainer    = m_CookieJar; 
      request.Accept      = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; 
      request.ServicePoint.ConnectionLimit = Consts.CONNECTIONS_LIMIT; 
      request.UserAgent     = Consts.URI_USER_AGENT; 
      request.AllowAutoRedirect   = true; 
      request.Host       = Consts.API_HOST; 

      // Web response 
      using (HttpWebResponse resp = (HttpWebResponse)request.GetResponse()) 
       response = new StreamReader(resp.GetResponseStream()).ReadToEnd(); 
     } 
     catch (Exception ex) 
     { 
      LogWriter.Error(ex); 
     } 

     return response; 
    } 

我的問題是:這將是我們addopt最好的方法? 我們希望有我們自己的lib將使用HttpWebRequest object,結局有些事情是這樣的:

MyOwnDll.MyOwnClassResponsibleForWebRequests.Get (Parameters) 

同爲POST方法。

我該怎麼辦?

在此先感謝

+2

不知道你在問什麼,你似乎知道你需要做什麼。你需要幫助製作圖書館還是編寫實現獲取?無論如何,當我這樣做時,我使用套接字,所以我有更多的控制權,所以如果你要經過努力,我建議擴展套接字。但是如果你使用的是.net 3.5+,你可以使用擴展方法,這對你正在嘗試做的事情可能更容易。 – bebonham 2012-01-05 17:22:40

+0

我不會使用.NET。這將用於桌面c#應用程序。我需要幫助弄清楚我應該如何構建「Get」方法。 – 2012-01-05 17:26:20

+0

你在尋找什麼建議?你所做的就是在現有的包裝類中編寫你自己的包裝類。實際上沒有什麼可以實現它,你需要它。 – cdeszaq 2012-01-05 17:27:27

回答

1

我想你應該遵循Factory Pattern

事情是這樣的:

public class MyOwnClassResponsibleForWebRequests 
{ 
    private MyOwnClassResponsibleForWebRequests(){} 

    public HttpRequest Get(Params) 
    { 
     HttpRequestobj hr = new HttpRequest(); 
     .....your code 
     return hr; //or make request and return result 
    } 
} 

,或者你可以請求本身並返回結果,而不是HttpRequest對象的。

+0

使用一個對象來構建什麼? 抱歉,我錯過了... – 2012-01-05 17:23:24

+0

@MarcelloGrechiLins檢查我的編輯。 – 2012-01-05 17:28:10

+0

哦,我想我並不那麼清楚,對不起。通過「GET」方法,我的意思是一個HTTPGET,而不是像「Getters and Setters」那樣獲取。得到它了 ? – 2012-01-05 17:30:12

相關問題