Problème avec la barre oblique à l'intérieur d'une chaîne de requête
Je suis en utilisant le WebRequest la classe pour faire une demande de certains site. La chaîne de requête contient une barre oblique (/), qui sont la cause de l'url à être coupée par le site, car il ne voit pas cela comme une partie de la chaîne de requête.
La chaîne de requête est: "mon params /séparés par des slash".
La demande:
var request = WebRequest.Create(
"http://www.somesime.com/q-my+params+%2f+separated+by+slash"
);
Ce que je manque?
EDIT:
Après toutes les réponses sont ici de mise à jour:
Je me suis trompé sur la chaîne de requête, ce n'est pas vraiment de la chaîne de requête, mais l'url doit regarder (sans le "?"):
"http://www.somesime.com/q-my+params+%2f+separated+by+slash"
L'url "http://www.somesime.com/q-my+params+%2f+séparées+par+barre oblique" est le résultat de Serveur.UrlEncode méthode. Le code:
var url = "http://www.somesime.com/q-" +
Server.UrlEncode(@"my params /separated by slash");
EDIT 2:
Si je place l'url dans un navigateur, tout fonctionne.
Mais si je le lance par classe WebRequest, les url des résultats comme il a été appelé sans "/séparés par des slash" partie
- dans votre exemple, il n'existe pas de chaîne de requête. La chaîne de requête est la partie de l'url après un questionmark. Bien que cela peut sembler un peu comme une querystring il est, en fait, une partie du chemin.
- Serveur.UrlEncode va supprimer le '/'s ne sera pas gâcher votre webrequest, en supposant qu'il utilise le routage d'URL vous avez juste modifié le chemin d'accès.
- Serveur.UrlEncode convertit " / " à "%2f'. Mais le site, je fais une demande, encore le voir que"/"
Vous devez vous connecter pour publier un commentaire.
Si c'est votre code vous manque ?:
Vous avez besoin de regarder les apaches directive allowencodedslashes option
http://httpd.apache.org/docs/2.0/mod/core.html#allowencodedslashes
Vous devriez être en mesure d'activer ce travers .htaccess ou httpd_conf
UrlEncode il. (Vous aurez besoin d'une référence à
System.Web
)vous avez oublié de mettre "?" avant le nom de la clé , donc, essayez :
Cette partie de l'URL:
est en fait la continuation de l'URL, le site utilise probablement une sorte de routage d'URL. Les chaînes de requête sont signalées par le '?' et séparés par des " &".
Si vous avez besoin d'enlever '/' à partir d'une URL puis HttpUtility.UrlEncode serait la voie à suivre, mais ce ne sera pas vous aider dans votre cas, comme n'importe quel codage fait à l'URL sera presque certainement entraîner votre WebRequest à l'échec.
?
(Oui, c'est ce qui vous manque. 🙂
Utiliser comme cette
$qrypic = 'INSERT INTO tbl_propics (userID,num,imagename,propic) VALUES ("$id","1","http://\graph.facebook.com/\$id/\image?type=grand","1")';