0

Chaque fois que l'URL contient des paramètres japonais, la fonction requestWithURL renvoie null.NSMUtableURLRequest requestWithURL renvoie null lorsque l'URL contient des paramètres japonais

urlString = https://translate.google.co.in/#ja/en/はははは 
NSMutableURLRequest *Request= [NSMutableURLRequest requestWithURL:[NSURL URLWithString:urlString]]; 

Chaque fois que les paramètres incluent EN, requestWithURL fonctionne correctement.

+0

J'ai essayé votre code (en swift). L'URL elle-même devient 'nil' quand vous le créez à partir de cette chaîne. La requête est «nil» simplement parce que vous passez une URL «nil» pour commencer. –

+0

Je ne suis pas très versé dans la classe «NSURL» des intricacies, mais vous devriez peut-être désinfecter votre chaîne avant d'essayer de créer une URL à partir de caractères non-ASCII. Pas sûr, mais une lecture approfondie des docs pourrait vous donner un indice ... –

+0

J'ai trouvé votre réponse ici: http://stackoverflow.com/questions/2125230/nsurl-urlwithstring-is-null-with-non-english -accented-characters –

Répondre

1

Vous devez encoder votre chemin, car il contient des caractères non autorisés dans une URL:

NSString *base = @"https://translate.google.co.in"; 
NSString *path = @"/#ja/en/はははは"; 

NSURLComponents *urlComponents = [NSURLComponents componentsWithString:base]; 
urlComponents.path = path; 

NSMutableURLRequest *request= [NSMutableURLRequest requestWithURL:urlComponents.URL]; 

Notez que la demande encore ne vous donnera pas le résultat souhaité, puisque dans un navigateur que vous faites une demande à https://translate.google.co.in/ avec ja/en/はははは comme fragment identifier for JavaScript, tandis que dans le code vous faites une demande à https://translate.google.co.in/# ..., qui n'existe pas.