2012-01-05 4 views
0

Я только начал писать Class Library в C#, который будет реализовывать Gets, Posts (Http Requests of Post and Gets) и oAuth (метод аутентификации с использованием маркеров токенов).Какой лучший подход для Lib, который расширяет класс HttpWebRequest?

В настоящее время каждый апликация, которую я и мои коллеги пишут, имеют свой собственный класс «HttpMethods», который отвечает за выполнение Gets and Posts.

Вот быстрый Пример Получить То, что мы имеем:

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

+0

Я не буду использовать .NET. Это будет использоваться в настольных приложениях C#. Мне нужна помощь, чтобы выяснить, как я должен создать метод «Get», например. –

+0

Какой совет вы ищете? Все, что вы делаете, это писать собственный собственный класс оболочки вокруг существующего. Там действительно нет больше, чтобы реализовать его, как вам это нужно. – cdeszaq

ответ

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

Использование объекта для создания чего? Извините, я пропустил это ... –

+0

@MarcelloGrechiLins проверить мое редактирование. –

+0

О, я думаю, я не был таким ясным, мне жаль. методом «GET», я имел в виду HTTPGET, а не Get Get Get Get Get Get Get Get Get Get Get Get Get Get Get Get Get Get Понял ? –

Смежные вопросы