2009-08-19 9 views
0

Je construis un grattoir d'écran html, qui analyse les URLs, puis les compare avec un ensemble d'autres URLs.Grattoir d'écran C# - Manipuler le long uri

La comparaison est faite avec Uri.AbsoluteUri ou Uri.Host. Mon problème est que lorsque je crée un nouvel Uri (nouvel Uri (url)), une exception UriFormatException est levée quand l'URL doit être longue, ou contient de nombreuses barres obliques.

Étant donné que mon ensemble d'URL prédéfini contient plusieurs (à) longues URL, je ne peux pas utiliser la sous-chaîne uniquement pour extraire une partie de l'URL.

Quelle serait la meilleure façon de gérer cela?

Merci

Répondre

1

Vous pouvez utiliser Uri.TryCreate pour vérifier si l'URI est valide avant new il.

Vous ne devriez pas obtenir une exception sur une URL c'est si court. Le programme suivant fonctionne bien sur VS2008:

static void Main(string[] args) 
{ 
    Uri uri = new Uri("http://stackoverflow.com/questions/1298985/c-screen-scraper-handle-long-uris/c-screen-scraper-handle-long-uris/c-screen-scraper-handle-long-uris/c-screen-scraper-handle-long-uris/c-screen-scraper-handle-long-uris/c-screen-scraper-handle-long-uris/c-screen-scraper-handle-long-uris/c-screen-scraper-handle-long-uris/"); 
    Uri uri2 = new Uri("http://stackoverflow.com/questions/1298985/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/"); 
    Console.ReadLine(); 
} 
+0

Oui, je sais, mais si cela échoue, je ne peux pas comparer cet uri à ma liste. Ce que je voudrais, c'est juste "désactiver" ces contrôles lors de la création d'un nouvel Uri. – alexn

+0

Combien de temps dure votre uris "trop ​​long"? Êtes-vous sûr qu'ils sont réellement valides? – Espo

+0

L'uri que je teste est complètement valide, seulement les caractères autorisés. La longueur est de 277 caractères. – alexn