2009-02-05 17 views
37

के साथ HTTP प्राप्त करने का अनुरोध कैसे करें HTTP अनुरोध के साथ पैरामीटर पास करना संभव है? यदि हां, तो मुझे यह कैसे करना चाहिए? मुझे HTTP पोस्ट अपेक्षित (link) मिला है। उस उदाहरण में स्ट्रिंग postData वेबसर्वर को भेजी जाती है। मैं का उपयोग कर का उपयोग कर ऐसा करना चाहता हूं। Google ने इस उदाहरण को HTTP पर here पर पाया। हालांकि वेब सर्वर पर कोई पैरामीटर नहीं भेजा जाता है।पैरामीटर

उत्तर

17

एक जीईटी अनुरोध में, आप क्वेरी स्ट्रिंग के हिस्से के रूप में पैरामीटर पास करते हैं।

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

आप Adresse में पैरामीटर सहित पूरा URL दर्ज किया है में ?Object = value उपयोग कर रहे हैं बुलाना चाहिए ixplore की बार, क्या मुझे वही प्रतिक्रिया मिलती है जैसे एक http अनुरोध सी # – CruelIO

+0

से मिलता है यह मामला होना चाहिए। – EndangeredMassa

+5

यह सी # कोड नहीं है ... – psyklopz

85

पहले WebClient उपयोग करना आसान है; प्राप्त तर्क क्वेरी स्ट्रिंग में वर्णित होता है - केवल चाल किसी भी मान से बचने के लिए याद करने के लिए है:

 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 ऑब्जेक्ट मेरे लिए बहुत अधिक काम जैसा लगता है। मैं वेब क्लाइंट नियंत्रण का उपयोग करना पसंद करता हूं।

इस फ़ंक्शन का उपयोग करने के लिए आपको केवल अपने पैरामीटर रखने और शीर्षलेखों का अनुरोध करने के लिए दो नामValueCollections बनाने की आवश्यकता है।

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"); 

तो जैसे एक NameValueCollection के रूप में अपने http हेडर (यदि आवश्यक हो) जोड़ें।

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

आप सीधे यूआरएल के माध्यम से मूल्य भी पास कर सकते हैं।

आप विधि public static void calling(string name){....}

तो कॉल करने के लिए चाहते हैं तो आप HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create("http://localhost:****/Report/calling?name=Priya); webrequest.Method = "GET"; webrequest.ContentType = "application/text";

का उपयोग कर बस सुनिश्चित करें कि आप URL