J'ai récemment découvert que ce qui suit ne fonctionne pas avec certains sites, tels que IMDB.com.WebRequest "HEAD" alternative de poids léger
class Program
{
static void Main(string[] args)
{
try
{
System.Net.WebRequest wc = System.Net.WebRequest.Create("http://www.imdb.com"); //args[0]);
((HttpWebRequest)wc).UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.2.153.1 Safari/525.19";
wc.Timeout = 1000;
wc.Method = "HEAD";
WebResponse res = wc.GetResponse();
var streamReader = new System.IO.StreamReader(res.GetResponseStream());
Console.WriteLine(streamReader.ReadToEnd());
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
Il renvoie un HTTP 405 (méthode non autorisée). Mon problème est, j'utilise un code très similaire à celui ci-dessus pour vérifier si un lien est valide et la grande majorité des fois cela fonctionne correctement. Je peux passer à la méthode GET égale et cela fonctionne (avec une augmentation de timeout), mais cela ralentit les choses d'un ordre de grandeur. Je suppose que la réponse 405 est une configuration de serveur du côté serveur d'IMDB.
Existe-t-il un moyen pour moi de faire la même chose que ci-dessus, d'une manière légère dans .NET? Ou, est-il un moyen de corriger le code ci-dessus afin qu'il fonctionne comme une requête GET qui fonctionne avec imdb?
J'ai dû augmenter le timeout, mais le code que vous avez posté ci-dessus fonctionne pour moi. Le modifier en POST n'aurait aucun sens, car vous n'avez aucune donnée à publier. Et votre titre parle de HEAD, mais vous ne faites pas une demande HEAD. S'il vous plaît clarifier quelle est la question, puisque votre code "cassé" fonctionne bien. –
Ug, typo vraiment stupide dans le titre. Fixé maintenant ... exemple classique de penser une chose et en taper une autre. Lorsque vous exécutez le code ci-dessus, vous n'obtenez pas une réponse 405? EDIT: Ok, réalisé même mon code était défectueux. Ce qui précède est ce que je voulais publier, et est édité pour donner l'erreur 405 (et faire sens .....) – Serapth