2009-08-06 7 views
2

J'utilise la classe WebRequest pour faire une demande à un site. La chaîne de requête contient une barre oblique (/), qui provoque la coupure de l'URL par le site, car elle ne la voit pas dans la chaîne de requête.Problème avec une barre oblique dans une chaîne de requête

La chaîne de requête est: "mes paramètres/séparés par une barre oblique".

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 ici sont à jour:

Je me suis trompé sur la chaîne de requête, ce n'est pas en fait la chaîne de requête, mais l'URL doit regarder (sans "?"):

"http://www.somesime.com/q-my+params+%2f+separated+by+slash" 

L'URL "http://www.somesime.com/q-my+params+%2f+separated+by+slash" est le résultat de la méthode Server.UrlEncode. Le code:

var url = "http://www.somesime.com/q-" + 
    Server.UrlEncode(@"my params/separated by slash"); 

EDIT 2: Si je place l'url résultant dans un navigateur, tout fonctionne. Mais si je le lance à travers la classe WebRequest, les résultats url comme on l'appelait sans «/séparés par une barre oblique » partie

+1

Dans votre exemple, il n'y a pas de chaîne de requête.La chaîne de requête est la partie de l'URL après un point d'interrogation, bien que cela ressemble un peu à une chaîne de requête. Une partie du chemin –

+0

Server.UrlEncode va supprimer les '/', donc cela ne gâchera pas votre webrequest, en supposant qu'il utilise le routage URL que vous venez de modifier le chemin – Charlie

+0

@ F5ToDebug: Server.UrlEncode convertit '/' à '% 2f' Mais le site, je fais une demande, toujours le voir comme '/' – Kamarey

Répondre

1

Si ceci est votre code réel vous manque le:

var request = WebRequest.Create("http://www.somesime.com/?q=my+params+%2f+separated+by+slash"); 
0

UrlEncode il . (Vous aurez besoin d'une référence à System.Web)

string url = "http://www.somesime.com/?q=my+params+%2f+separated+by+slash"); 
var request = WebRequest.Create(HttpUtility.UrlEncode(url)); 
+0

Vous devriez seulement encoder les valeurs, pas toute l'URL, et c'est déjà fait ... – Guffa

+0

Oui, vous avez raison - seules les valeurs doivent être codées (en supposant qu'elles ne l'aient pas déjà été). –

0

vous avez oublié de mettre "?" avant le nom clé, alors essayez:

var request = WebRequest.Create("http://www.somesime.com?q=my+params+%2f+separated+by+slash"); 
0

Cette partie de l'URL:

/q=my+params+%2f+separated+by+slash 

est en fait une continuation de l'URL, le site utilise probablement une sorte de routage d'URL. Les chaînes de requête sont désignées par '?' et séparé par '&'. Si vous avez dû supprimer '/' d'une URL, alors HttpUtility.UrlEncode serait le chemin à parcourir, mais cela ne vous profitera pas dans la mesure où tout encodage effectué sur l'URL provoquera presque certainement votre demande de WebRequest. échouer.

0

?

(Oui, c'est-ce que vous manquez. :)

0

Utilisez comme cette

$ qrypic = « INSERT INTO tbl_propics (userID, num, imagename, propic) VALUES ("$ id", "1", "http: // \ graph.facebook.com/ \ $ id/\ image?type = large "," 1 ") ';

Questions connexes