2009-02-05 3 views
37

Возможно ли передать параметры с помощью запроса HTTP? Если да, то как мне это сделать? Я нашел сообщение HTTP requst (link). В этом примере строка postData отправляется на веб-сервер. Я хотел бы сделать то же самое, используя вместо. Google нашел этот пример на HTTP и получил here. Однако никакие параметры не отправляются на веб-сервер.Как получить запрос HTTP-запроса с параметрами

ответ

17

В запросе GET вы передаете параметры как часть строки запроса.

string url = "http://somesite.com?var=12345"; 
+0

Если ввести полный URL, включая параметры в Адресс bar iexplore, я получаю тот же ответ, что и запрос http, полученный от C# – CruelIO

+0

Это должно быть так. – EndangeredMassa

+5

Это не код C# ... – psyklopz

85

Первый WebClient более прост в использовании; GET аргументы указаны на строки запроса - единственный фокус в том, чтобы помнить, чтобы избежать каких-либо значений:

 string address = string.Format(
      "http://foobar/somepage?arg1={0}&arg2={1}", 
      Uri.EscapeDataString("escape me"), 
      Uri.EscapeDataString("& me !!")); 
     string text; 
     using (WebClient client = new WebClient()) 
     { 
      text = client.DownloadString(address); 
     } 
93

Мой предпочтительный способ заключается в следующем. Он обрабатывает экранирование и синтаксический анализ для вас.

WebClient webClient = new WebClient(); 
webClient.QueryString.Add("param1", "value1"); 
webClient.QueryString.Add("param2", "value2"); 
string result = webClient.DownloadString("http://theurl.com"); 
+1

Спасибо, отличный ответ. –

6

Объект WebRequest кажется для меня слишком большой работой. Я предпочитаю использовать элемент управления WebClient.

Чтобы использовать эту функцию, вам просто нужно создать два NameValueCollections, содержащих ваши параметры и заголовки запросов.

Рассмотрим следующую функцию:

private static string DoGET(string URL,NameValueCollection QueryStringParameters = null, NameValueCollection RequestHeaders = null) 
    { 
     string ResponseText = null; 
     using (WebClient client = new WebClient()) 
     { 
      try 
      { 
       if (RequestHeaders != null) 
       { 
        if (RequestHeaders.Count > 0) 
        { 
         foreach (string header in RequestHeaders.AllKeys) 
          client.Headers.Add(header, RequestHeaders[header]); 
        } 
       } 
       if (QueryStringParameters != null) 
       { 
        if (QueryStringParameters.Count > 0) 
        { 
         foreach (string parm in QueryStringParameters.AllKeys) 
          client.QueryString.Add(parm, QueryStringParameters[parm]); 
        } 
       } 
       byte[] ResponseBytes = client.DownloadData(URL); 
       ResponseText = Encoding.UTF8.GetString(ResponseBytes); 
      } 
      catch (WebException exception) 
      { 
       if (exception.Response != null) 
       { 
        var responseStream = exception.Response.GetResponseStream(); 

        if (responseStream != null) 
        { 
         using (var reader = new StreamReader(responseStream)) 
         { 
          Response.Write(reader.ReadToEnd()); 
         } 
        } 
       } 
      } 
     } 
     return ResponseText; 
    } 

Добавить свои параметры строки запроса (при необходимости) в виде NameValueCollection как так.

 NameValueCollection QueryStringParameters = new NameValueCollection(); 
     QueryStringParameters.Add("id", "123"); 
     QueryStringParameters.Add("category", "A"); 

Добавьте свои http заголовки (если требуется) в качестве имениValueCollection, как это.

 NameValueCollection RequestHttpHeaders = new NameValueCollection(); 
     RequestHttpHeaders.Add("Authorization", "Basic bGF3c2912XBANzg5ITppc2ltCzEF"); 
0

Вы также можете передать стоимость непосредственно по URL-адресу.

Если вы хотите, чтобы вызвать метод public static void calling(string name){....}

то следует вызвать с помощью HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create("http://localhost:****/Report/calling?name=Priya); webrequest.Method = "GET"; webrequest.ContentType = "application/text";

Просто убедитесь, что вы используете ?Object = value в URL