2010-01-30 7 views
0

J'essaie de demander une page Web à partir d'un serveur Web iis que je contrôle en utilisant des chaînes de requête.Perdant des caractères dans l'analyse syntaxique de chaînes Web à l'aide de chaînes de requête

Par exemple, j'ai un contrôle WebBrowser dans mon WinForms application et demander une page similaire à « www.site.com/getpage.ashx?field=afsfgwesar+sere »

Quand je tente d'exécuter ce qu'il échoue Parce que du côté serveur, getpage.ashx ne trouve pas le bon champ. Après avoir beaucoup tiré les cheveux, j'ai compris que la chaîne a changé par rapport à ce qui a été envoyé au navigateur et ce qui a été reçu, c'est-à-dire que le symbole plus est manquant lorsque le serveur commence à travailler dessus.

Il commence par "afsfgwesar + sere" et se termine par "afsfgwesarsere". Donc, quelque part le long de la ligne, la chaîne est en cours de reformatage?

Voilà comment je reçois la chaîne sur le côté serveur -

string field = (string)context.Request.QueryString["field"]; 

Il est à ce moment j'ai intervenu et vu le symbole plus manquant.

Est-ce que quelqu'un sait pourquoi je perds le symbole plus et comment je peux le récupérer?

Répondre

0

Le signe plus est un caractère réservé dans les chaînes query. Il est souvent interprété comme un caractère spatial. Jetez un oeil à un moteur de recherche et vous remarquerez cela.

Vous pouvez empêcher cela en codant le texte afsfgwesar + sere avant de l'ajouter à la chaîne de requête. Utilisez HttpUtility.UrlEncode pour le faire. Utilisez HttpUtility.UrlDecode pour le relire.

Pour plus d'informations, lisez: http://msdn.microsoft.com/en-us/library/4fkewx0t.aspx

+0

fantastique .. merci beaucoup. – Grant

2

Le symbole + est remplacé par un caractère espace car les espaces ne sont pas des caractères autorisés.

Vous pouvez insérer %2B pour obtenir le symbole plus après le décodage de l'URL.

www.site.com/getpage.ashx?field=afsfgwesar%2Bsere 

Le HttpUtility class a des méthodes pour coder des URL et des chaînes de décodage. Pour voir ce qu'il fait, il y a aussi un online encoder/decoder que vous pouvez utiliser.

+0

Pouvez-vous me dire comment reformater avant tranmission? d'une manière que je peux le reformater automatiquement à son original? – Grant

Questions connexes