2012-01-05 74 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

相关问题