Ich habe gerade mit der Entwicklung auf Macs begonnen und Cocoa als nützliches und durchdachtes Framework gefunden, aber seine HTTP-Funktionalität hat mich verwirrt.Atomare, asynchrone HTTP-Datei POST mit sensibler Rückmeldung?
Ich habe ein NSURLConnection-Objekt, um eine Datei von meinem Webserver mit der HTTP GET-Methode herunterzuladen. Die asynchrone Verbindung von NSURLConnect ist großartig, ich bekomme viel Feedback, ich bekomme jeden empfangenen Chunk als neues NSData-Objekt, mit dem ich die Datei auf dem Client-Ende atomar neu erstellen kann und, um dem Benutzer einen Fortschrittsbericht zu geben: [myData length ].
Uploads sind jedoch nicht annähernd so sauber. Sie können entweder eine synchrone Anfrage in einen eigenen Thread stecken oder eine asynchrone Anfrage (von der ich glaube, dass sie einen eigenen Thread erzeugt) aufrufen, aber Sie erhalten keine nützliche Rückmeldung. Es gibt keine Delegierten, die Daten anfordern oder mich wissen lassen, wenn Daten gesendet werden. Vermutlich beschränkt dies mich auf Dateien, die kleiner sind als der verfügbare Speicher.
Meine Frage ist daher, gibt es eine einfache und elegante Lösung für HTTP-POST-Datei-Uploads mit Cocoa, die eine gute Menge an Feedback und die Fähigkeit, Dateien zu lesen, Teil für Teil und nicht auf einmal? Oder sollte ich meine eigene Klasse aus Low-Level-Netzwerkfunktionalität schreiben?
Danke!
Warum lassen Sie sie nicht in ihren eigenen Threads gehen? Sie können NSOperation verwenden, um sicherzustellen, dass Sie/etc nicht erstellen/verwalten. Tonnen von Fäden, die Sie nicht brauchen. Welche Art von Datenfeedback erwarten Sie von einem POST-Vorgang? –
Die Menge der Daten, die ich bisher hochgeladen habe. Ich habe es mit potenziell großen Dateien zu tun, daher muss ich dem Benutzer einen Fortschrittsbalken oder Ähnliches bereitstellen. Threading ist nicht so sehr das Problem, es ist vielmehr die Möglichkeit, Dateien - Teil für Teil - zu laden und Feedback zu erhalten. Requisiten für die absurd schnelle Antwort! – Dani
Ah, okay! Ich würde wahrscheinlich selbst etwas rollen. Ich bin mir ziemlich sicher, dass ich einmal eine anständige Klasse für NSURL mit POST-Funktionalität gesehen habe, aber ich kann mich nicht erinnern, wo ... vielleicht jemand eine anständige Antwort hinzufügen wird, aber vielleicht möchten Sie es ein wenig googeln. Ich erinnere mich, dass ich ein bisschen gegraben habe, um es selbst zu finden. –