L'URL d'un service Web que j'ai besoin d'appeler inclut un paramètre qui inclut du texte de formulaire libre. Je ne suis pas sûr pourquoi il a été conçu de cette façon, car il est envoyé en utilisant POST et comprend de nombreux champs dans le cadre du POST. Mais, cela me cause un problème.Url pour HttpWebRequest tronqué par des caractères spéciaux
Pour certains caractères tels que le signe dièse et <>, l'URL est tronquée lorsqu'elle rencontre le caractère de problème. Je suis HTML codant le texte pour le paramètre, mais le problème demeure. Je peux voir des caractères spéciaux comme> sont codés à quelque chose comme gt ;. Je pense que le point-virgule dans la chaîne codée est en quelque sorte un problème.
Je mets un sniffer qui reçoit la requête entrante sur le serveur et je vois là que l'URL a été tronquée.
Sur le serveur, je vois quelque chose comme:
...?extraData=kjfkfjslkj
au lieu de:
...?extraData=kjfkfjslkj#kfjkdlsfj
Le code est quelque chose comme ceci:
using System.Web;
....
String strExtra="kjfkfjslkj#kfjkdlsfj";
strURL = strStuff + "?extraData=" + System.Web.HttpUtility.HtmlEncode(strExtra);
HttpWebRequest oRequest = (HttpWebRequest)WebRequest.Create(new Uri(strURL));
oRequest.Method = httpMethod;
oRequest.ContentType = "application/atom+xml";
...
using (WebResponse oResponse = oRequest.GetResponse())
{
...
}
Oui. Cela a fonctionné pour moi. La seule chose différente est que j'ai utilisé System.Web.HttpUtility.UrlEncode() – George
La propriété 'Page.Server' est de type' HttpServerUtility' et les méthodes 'UrlEncode' /' UrlDecode' passent réellement l'appel à 'HttpUtility. UrlEncode'/'HttpUtility.UrlDecode', donc vous êtes bon. –
System.Web.HttpUtility.UrlEncode ne se débarrasse pas du signe de hachage ... – Ted