Pourquoi Mon Web HTTP de Code de la Demande de ne Pas Envoyer une Demande?
Comment poster la suite des requêtes HTTP en C#
POST http://10.0.0.1/st_poe.cgi
Accept: image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*
Referer: http://10.0.0.1/RST_st_poe.htm
Accept-Language: en-US
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Host: 10.0.0.1
Content-Length: 21
Connection: Keep-Alive
Pragma: no-cache
Authorization: Basic YWStaW47c3Jsa3NobQ==
ConMethod=++Connect++
Je suis en train de le faire avec le code suivant. Il n'est pas de travail.
string user = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(username + ":" + password));
byte[] bytes = System.Text.Encoding.ASCII.GetBytes("ConMethod=++Connect++");
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://10.0.0.1/st_poe.cgi");
request.Method = "POST";
request.Headers.Add("Accept: image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*");
request.Referer = "http://10.0.0.1/RST_st_poe.htm";
request.Headers.Add("Accept-Language: en-US");
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)";
request.ContentType = "application/x-www-form-urlencoded";
request.Headers.Add("Accept-Encoding: gzip, deflate");
request.ContentLength = bytes.Length;
request.Headers.Add("Host: 10.0.0.1");
request.Headers.Add("Connection: Keep-Alive");
request.Headers.Add("Pragma: no-cache");
request.Headers.Add("Authorization: Basic "+user);
Stream reqStream = request.GetRequestStream();
reqStream.Write(bytes, 0, bytes.Length);
reqStream.Close();
Quelqu'un peut-il point où je suis bien. Je suis l'aide de HttpWebRequest pour la première fois.
OriginalL'auteur | 2009-07-04
Vous devez vous connecter pour publier un commentaire.
Vous devez effectuer la demande réelle avec
Alternativement, vous pouvez utiliser la plus simple
System.Net.WebClient
classe:OriginalL'auteur Mehrdad Afshari
Mehrdad a droit. Je vais seulement ajouter que si vous allez en tenir à HttpWebRequest, alors vous devez apprendre à utiliser "utiliser" blocs pour toutes les ressources que vous allouez qui implémente IDisposable:
using
est une pratique de construire, mais pour wcf CommunicationObject, qui mettent en œuvre IDisposable,using
est un moyen rapide pour les non-initiés à sonder les profondeurs de la folie...Je suis conscient de cela. Mais notez que la WCF est la seule sérieuse exception je connais, et que c'est dû à un défaut de conception de la WCF. Dans tous les autres cas, le fait qu'une classe implémente IDisposable signifie que vous devriez assurez-vous de Disposer d'appel, et dans tous les cas sauf un, cela signifie que vous devriez certainement utiliser un bloc using.
Sans "l'aide" ou en appelant dispose sur le HttpWebResponse ensuite les demandes GET accrocher à la suite d'un POST si la requête.UserAgent est donné une valeur. J'ai découvert cela avec certains HttpWebRequest code utilisé pour vérifier si une connexion est disponible lorsqu'il est utilisé en combinaison avec RestSharp.
OriginalL'auteur John Saunders