2016-08-08 26 views
2

Ich versuche, Remote-TXT-Datei zu lesen, die auf Remote-Hosting befindet. Ich habe einen Link, wie http://www.link.com/file.txt.Kann nicht Ergebnis von NSURL

Ich verwende diesen Code:

let myURLString = "http://google.com" 
guard let myURL = NSURL(string: myURLString) else { 
    print("Error: \(myURLString) doesn't seem to be a valid URL") 
    return 
} 

do { 
    let myHTMLString = try String(contentsOfURL: myURL) 
    print("HTML : \(myHTMLString)") 
} catch let error as NSError { 
    print("Error: \(error)") 
} 

Aber immer leeren String bekommen. Die Datei ist nicht sicher leer. Ich verwende meine App im iOS-Simulator in Xcode. Was mache ich falsch?

Sorry für mein schlechtes Englisch.

+0

Was ist der Fehler, der zurückkommt? –

+0

Ich habe deinen Code auf einem Spielplatz getestet (mit google.com als Beispiel) und erhalte ein Ergebnis. Der Code funktioniert gut, es scheint. Könnten Sie den txt Link teilen? Können Sie den Link in Ihrem Terminal abrufen (z. B. mit wget)? –

+0

Sie können einen Proxy-Debugger (z. B. Charles Proxy usw.) verwenden, um zu überprüfen, ob Ihre HTTP-Anforderung gesendet wird und die Antwort den erwarteten Inhalt enthält. –

Antwort

1

Verwenden Sie nicht stringWithContentsOfURL und Freunde, um Daten von einem Remote-Server abzurufen. Das ist eine synchrone API, die ausschließlich für die Verwendung mit lokalen Dateien entwickelt wurde. Es ist nicht einmal garantiert, dass es für Netzwerkanforderungen auf Hintergrundthreads richtig funktioniert, geschweige denn in Ihrem Hauptthread.

Der richtige Weg zum Abrufen von Daten von Remote-URLs ist mit NSURLSession. Ich bin kein Swift-Programmierer, also werde ich kein Swift-Snippet versuchen, aber das Objective-C-Äquivalent lautet:

0

Haben Sie den Code nicht getestet, aber dies sollte Sie in die richtige Richtung führen.

var statsRequest: String = "http://www.link.com/file.txt" 
var statsRequestURL: NSURL = NSURL(string: statsRequest)! 
var error: NSError? = nil 
var stockNews: String = try! String.stringWithContentsOfURL(statsRequestURL, encoding: NSUTF8StringEncoding) 

Wenn die Textdatei eine andere Codierung hat, können Sie nur NSASCIIStringEncoding verwenden und dann die HTML-Datei analysieren.