2010-12-23 4 views
0

Meine URL ist http://sample_domain/sample.json?{ "language" : "en", "category" : "sports"}NSURL gibt beim Senden der JSON-Serviceanforderung null aus.

Ich konvertiere dies zu NSURL-Objekt wie unten.

NSURL *url=[NSURL URLWithString:@"http://sample_domain/sample.json?{ "language" : "en", "category" : "sports"}"]; 

seine Rückkehr null zu NSURL Objekt, weiß, dass ich die URL in bestimmtem Format von Apple Dokumentation sein sollte, sonst wird es als Malware-Website angesehen wird und gibt nil Objekt,

meine Frage ist, wie kann Ich übergebe diese Parameter mit Apple-Standards, so dass es nie wieder Objekt wird.

Vielen Dank im Voraus.

+0

Kannst du die Daten anders kodieren? Es könnte sinnvoller sein, normale Anfrage Codierung zu verwenden, z : 'http: // Beispiel _domain/sample.json? language = de & category = sports' Wie Sie sehen, ist es immer noch die gleiche Information, aber jetzt arbeitet es viel mehr mit der Funktionsweise des normalen Webs, anstatt darauf zu bestehen, es anders zu machen. –

+0

Hallo Donald, wenn ich das selbst im Browser versuche, bekomme ich keine Antwort, aber wenn ich das unter NSString * str1 = [@ "\" lan \ ": \" de \ ", \" cat \ ": \" Menüs \ "" stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]; \t NSString * str2 = [NSString stringWithFormat: @ "http: //domain/test.json? {% @}", Str1]; \t NSURL * Beispiel = [NSURL URLWithString: str2]; jetzt bekomme ich nil url objekt, aber wenn ich 'str2' im browser kopiere und einfüge bekomme ich antwortdaten, also sollte ich hier nicht '' 'codieren und auch NSURL sollte nicht null sein, irgendwelche ideen bitte. – mac

Antwort

1

Versuchen

NSURL *url=[NSURL URLWithString:[@"http://sample_domain/sample.json?{ \"language\" : \"en\", \"category\" : \"sports\"}" 
        stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

Ich bin nicht sicher, warum ‚"‘Zeichen sind nicht in Ihrem Beispiel entkommen, aber ich denke, der Code ohne entkommt nicht kompilieren.

Auch Sie müssen (und das ist das Hauptproblem), um Zeichen zu ersetzen, die illegal sind in Url (zB ':' mit entsprechenden Prozent Escapes - das ist, was stringByAddingPercentEscapesUnsingEncoding Funktion tut.

+0

Hallo Donal ich versuchte mit der StringByAddingPercentEscapesUsingEncoding, jetzt bekomme ich die URL, aber die Antwortdaten von der URL ist Null Bytes, wenn ich kopiere die URL in den Browser das gleiche Problem einfügen, dann bemerkte ich diese Methode Codierung der '{' zu '% 7B' ist das ein Problem. – mac

+0

@mac wenn URL korrekt ist das Problem, das Sie nicht bekommen Ergebnis kann in Ihrem Server sein - versuchen Sie es zu sehen – Vladimir

+0

mein Problem hier ist, sollte ich nicht '' ',' '', in meinem URL-String, in meinem browser selbst, wenn ich Klammern verschlüsseln und Anfrage senden bekomme ich keine Antwort, so ist meine Frage, wie bekomme ich gültige NSURL-Objekt, das '{', '}' enthält, bitte geben Sie mir einige Ideen. – mac

Verwandte Themen