2010-07-19 14 views
36

मैं एक वेब सेवा से एक विधि कॉल करने की जरूरत है, तो मैं इस कोड लिखा है:वेबरवेस्ट में पैरामीटर कैसे जोड़ें?

private string urlPath = "http://xxx.xxx.xxx/manager/"; 
string request = urlPath + "index.php/org/get_org_form"; 
WebRequest webRequest = WebRequest.Create(request); 
webRequest.Method = "POST"; 
webRequest.ContentType = "application/x-www-form-urlencoded"; 
webRequest. 
webRequest.ContentLength = 0; 
WebResponse webResponse = webRequest.GetResponse(); 

लेकिन इस विधि निम्नलिखित के रूप में, कुछ मानकों की आवश्यकता है:

पोस्ट डेटा:

_username:'API USER',   // api authentication username 

_password:'API PASSWORD',  // api authentication password 

मैं इन पैरामीटर को इस वेबरेक्व में कैसे जोड़ सकता हूं?

अग्रिम धन्यवाद।

उत्तर

29

यदि ये url-string के पैरामीटर हैं तो आपको उन्हें '?' के माध्यम से जोड़ना होगा और '&' वर्ण, उदाहरण के लिए http://example.com/index.aspx?username=Api_user&password=Api_password

यदि ये POST अनुरोध के पैरामीटर हैं, तो आपको पोस्ट डेटा बनाने और स्ट्रीम का अनुरोध करने के लिए इसे लिखने की आवश्यकता है। यहाँ नमूना विधि है: धारा

private static string doRequestWithBytesPostData(string requestUri, string method, byte[] postData, 
             CookieContainer cookieContainer, 
             string userAgent, string acceptHeaderString, 
             string referer, 
             string contentType, out string responseUri) 
     { 
      var result = ""; 
      if (!string.IsNullOrEmpty(requestUri)) 
      { 
       var request = WebRequest.Create(requestUri) as HttpWebRequest; 
       if (request != null) 
       { 
        request.KeepAlive = true; 
        var cachePolicy = new RequestCachePolicy(RequestCacheLevel.BypassCache); 
        request.CachePolicy = cachePolicy; 
        request.Expect = null; 
        if (!string.IsNullOrEmpty(method)) 
         request.Method = method; 
        if (!string.IsNullOrEmpty(acceptHeaderString)) 
         request.Accept = acceptHeaderString; 
        if (!string.IsNullOrEmpty(referer)) 
         request.Referer = referer; 
        if (!string.IsNullOrEmpty(contentType)) 
         request.ContentType = contentType; 
        if (!string.IsNullOrEmpty(userAgent)) 
         request.UserAgent = userAgent; 
        if (cookieContainer != null) 
         request.CookieContainer = cookieContainer; 

        request.Timeout = Constants.RequestTimeOut; 

        if (request.Method == "POST") 
        { 
         if (postData != null) 
         { 
          request.ContentLength = postData.Length; 
          using (var dataStream = request.GetRequestStream()) 
          { 
           dataStream.Write(postData, 0, postData.Length); 
          } 
         } 
        } 

        using (var httpWebResponse = request.GetResponse() as HttpWebResponse) 
        { 
         if (httpWebResponse != null) 
         { 
          responseUri = httpWebResponse.ResponseUri.AbsoluteUri; 
          cookieContainer.Add(httpWebResponse.Cookies); 
          using (var streamReader = new StreamReader(httpWebResponse.GetResponseStream())) 
          { 
           result = streamReader.ReadToEnd(); 
          } 
          return result; 
         } 
        } 
       } 
      } 
      responseUri = null; 
      return null; 
     } 
+0

@Omid संख्या इंगित करते कब तक सिस्टम को देने से पहले इंतजार करना चाहिए। – RyanfaeScotland

+1

@ कोडरहॉक के जवाब की तुलना में दृढ़ लगता है। – Kehlan

+0

पुराना विषय लेकिन .. "निरंतर" क्या है? –

68

उपयोग

string data = "username=<value>&password=<value>"; //replace <value> 
byte[] dataStream = Encoding.UTF8.GetBytes(data); 
private string urlPath = "http://xxx.xxx.xxx/manager/"; 
string request = urlPath + "index.php/org/get_org_form"; 
WebRequest webRequest = WebRequest.Create(request); 
webRequest.Method = "POST"; 
webRequest.ContentType = "application/x-www-form-urlencoded"; 
webRequest.ContentLength = dataStream.Length; 
Stream newStream=webRequest.GetRequestStream(); 
// Send the data. 
newStream.Write(dataStream,0,dataStream.Length); 
newStream.Close(); 
WebResponse webResponse = webRequest.GetResponse(); 
+0

इस 'newStream.Write (डेटा, 0, डेटा। लम्बाई)' – Smith

+0

@ स्मिथ - उपयोगकर्ता नाम और पासवर्ड में जोड़े गए अतिरिक्त पैरामीटर क्या हैं, पहली पंक्ति – CoderHawk

+0

अच्छा @ कोडरहॉक देखें .. धन्यवाद सर्वोत्तम कोडिंग प्रथाओं – KingRider

8

webrequest को फार्म पदों कर लिए सामग्री लिखने के लिए, सबसे अच्छा तरीका है() एक पोस्ट विधि के साथ WebClient.UploadValues ​​उपयोग करने के लिए है।

4

आशा इस काम करता है

webRequest.Credentials= new NetworkCredential("API_User","API_Password"); 
संबंधित मुद्दे