2013-03-15 9 views
6

Ich versuche, URL eine Zeichenfolge codieren, aber die NSURLConnection ist wegen einer "schlechten URL" fehlgeschlagen. Hier ist meine URL:Wie URL-Encodierung eines NSString

NSString *address = mp.streetAddress; 
    NSString *encodedAddress = [address stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
    NSString *cityState= mp.cityState; 
    NSString *encodedCityState = [cityState stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

    NSString *fullAddressURL = [NSString stringWithFormat:@"http://www.zillow.com/webservice/GetDeepSearchResults.htm?zws-id=<X1-ZWz1bivd5de5mz_8xo7s>&address=%@&citystatezip=%@", encodedAddress, encodedCityState]; 
    NSURL *url = [NSURL URLWithString:fullAddressURL]; 

Hier ist das Beispiel der API von dem Aufruf der URL:

Im Folgenden wird ein Beispiel für den Aufruf der API für die Adresse für die genaue Adresse match „2114 Bigelow Ave“, „Seattle , WA ":

http://www.zillow.com/webservice/GetDeepSearchResults.htm?zws-id=<ZWSID>&address=2114+Bigelow+Ave&citystatezip=Seattle%2C+WA 

Aus irgendeinem Grund kann diese URL keine Verbindung herstellen. Kann mir jemand helfen?

Antwort

16

Sie müssen Ihre fullAddressURL codieren, bevor Sie diese an NSURL senden, anstatt die Adresse & cityState einzeln zu codieren.

NSString *address = @"2114 Bigelow Ave"; 
//NSString *encodedAddress = [address stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
NSString *cityState= @"Seattle, WA"; 
// NSString *encodedCityState = [cityState stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

NSString *fullAddressURL = [NSString stringWithFormat:@"http://www.zillow.com/webservice/GetDeepSearchResults.htm?zws-id=<X1-ZWz1bivd5de5mz_8xo7s>&address=%@&citystatezip=%@", address, cityState]; 
fullAddressURL = [fullAddressURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
NSLog(@"fullAddressURL: %@",fullAddressURL); 

NSURL *url = [NSURL URLWithString:fullAddressURL]; 

Ich habe oben Code getestet und es gibt mir gleiche Ausgabe wie angegeben Link http://www.zillow.com/webservice/GetDeepSearchResults.htm?zws-id=<ZWSID>&address=2114+Bigelow+Ave&citystatezip=Seattle%2C+WA

+0

Eigentlich Die Ausgabe erhalte ich nicht über die Plus-Zeichen und% 2C das Komma ersetzt. Wie kommst du dazu? Ich verwende die gleiche Methode und Argumente, um die Adresse zu kodieren. –