45 votes

Comment ajouter des paramètres dans une WebRequest?

Je dois appeler une méthode à partir d'un service Web, j'ai donc écrit ce 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();
 

Mais cette méthode nécessite certains paramètres, comme suit:

publier les données:

_username: 'API USER', // nom d'utilisateur d'authentification api

_password: 'API PASSWORD', // mot de passe d'authentification api

Comment puis-je ajouter ces paramètres dans cette Webrequest?

Merci d'avance.

80voto

Coder Hawk Points 2344

Utilisez le flux pour écrire du contenu dans Webrequest

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

34voto

Eugene Cheverda Points 4565

Si ce sont les paramètres de la chaîne url, vous devez les ajouter via '?' et les caractères "&", par exemple http://mysite.com/index.aspx?username=Api_user&password=Api_password .

S'il s'agit des paramètres de la demande POST, vous devez créer des données POST et les écrire dans le flux de demande. Voici un exemple de méthode:

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

10voto

feroze Points 3433

Pour faire des publications FORM, la meilleure façon est d'utiliser WebClient.UploadValues () avec une méthode POST.

4voto

Hidsman Points 59

J'espère que cela fonctionne

webRequest.Credentials = new NetworkCredential ("API_User", "API_Password");

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X