2009-06-25 9 views
3

Ich habe Code ähnlich dem Folgenden mit einer URL wie folgt ... Wenn ich die erste * URL verwende, wird die Webseite Null zurückgeben. Wenn ich diese URL in ein URL-Verkürzungssystem wie bit.ly einfüge, funktioniert es und gibt die Seiten HTML als String zurück. Ich kann nur denken, dass ich ungültige Zeichen in meiner ersten * URL habe? Irgendwelche Ideen?stringWithContentsOfURL funktioniert nicht mit bestimmten Zeichenfolge

NSString *url [email protected]"http://www.testurl.com/testing/testapp.aspx/app.detail/params.frames.y.tpl.uk.item.1.cm_scid.TB-test/left.html.|metadrill,html/walk.yah.ukHB?cm_re=LN-_-OnNow-_-TestOne"; 

//above *url does not work, one below does 
NSURL *url =[NSURL URLWithString: @"http://bit.ly/shortened"]; 
NSString *webpage = [NSString stringWithContentsOfURL:url]; 

Antwort

3

Sie wahrscheinlich einige Zeichen in der ersten URL entkommen müssen, wie folgt:

NSString *url [email protected]"http://www.testurl.com/testing/testapp.aspx/app.detail/params.frames.y.tpl.uk.item.1.cm_scid.TB-test/left.html.|metadrill,html/walk.yah.ukHB?cm_re=LN-_-OnNow-_-TestOne"; 
NSString *escapedURL = [url stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]; 
NSString *webpage = [NSString stringWithContentsOfURL:[NSURL URLWithString:escapedURL]];

Der Bau der und seine URL fehl holen, wenn die URL Zeichen enthält, die nicht richtig entgangen sind (Betrachtet man die URL, ist das wahrscheinlich die Pipe (|), das Fragezeichen oder der Unterstrich).

+0

Danke Tim, hat super funktioniert! Was meinst du mit "entkommen"? –

+0

Ein "Escapezeichen" wird durch den Hexadezimalcode dargestellt, der das Zeichen und nicht das Zeichen selbst darstellt. Zum Beispiel wird in URLs ein Leerzeichen korrekt durch seine "Escape" Hexadezimaldarstellung% 20 dargestellt. Das% gibt dem Server an, dass ein Zeichen maskiert ist, und die nächsten beiden Zeichen werden als Hex behandelt und auf der Serverseite zurück in das entsprechende nicht-deklarierte Zeichen konvertiert. Es ist eine Möglichkeit, ungewöhnliche Zeichen (Rohre usw.) zuverlässig zu übertragen. – Tim

Verwandte Themen