Search code examples
c#.netweb-serviceshttpwebrequest

How to add parameters into a WebRequest?


I need to call a method from a webservice, so I've written this code:

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

But this method requires some parameters, as following:

Post data:

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

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

How can I add these parameters into this Webrequest?


Solution

  • If these are the parameters of url-string then you need to add them through '?' and '&' chars, for example http://example.com/index.aspx?username=Api_user&password=Api_password.

    If these are the parameters of POST request, then you need to create POST data and write it to request stream. Here is sample method:

    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;
            }