I URL
mit NSURL
basierend erschaffe und dann NSURLSession
verwenden, um eine Datei auf ein REST API
(self.prefix zu senden ist eine Zeichenkette wieMit NSURLSession mit HTTP REST API auf IOS in Swift
/var/mobile/Applications/39FEBF47-6B74-48F2-8484-638D4B79A5FC/Documents/app/s7UqOoLJcI7tUCB/file.png).
let UUID: String = "'UUID:" + (randomStringWithLength(32) as String) + "' "
let ContentType: String = "Content-Type:image/png < "
let str: String = "http://link/convert 'X-Auth-Token:a351sfddsf2cbcce8' 'X-Project-ID:2222' " + UUID + ContentType + self.prefix
let url = NSURL(string: str)
let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {(data, response, error) in
print(NSString(data: data!, encoding: NSUTF8StringEncoding))
}
task.resume()
I bin
bekommen"fatal error: unexpectedly found nil while unwrapping an Optional value"
weil URL null ist. Was soll ich tun, um richtig die URL zu konstruieren mit einer REST-API zu kommunizieren?
Dies ist, wie die Interaktion mit dem API in der Befehlszeile aus:
http link:80/action 'X-Auth-Token:a3s33cfeffswffffs5454534bcce8' 'X-Project-ID:1234' 'UUID:abcdef123456' Content-Type:image/jpg < ~/Downloads/file.jpg
ich derzeit eine HTTP-Anforderung wie unten erstellen, aber keine Antwort nicht sehen kann.
self.currentImage.image = tempImage
let body = NSMutableData()
let boundary = generateBoundaryString()
let fname = self.prefix
let mimetype = "image/png"
let imageData: NSData = UIImagePNGRepresentation(self.currentImage.image!)!
let UUID: String = randomStringWithLength(12) as String
let url = NSURL(string: "http://aaaa/bbb")!
let request = NSMutableURLRequest(URL: url)
request.HTTPMethod = "POST"
request.setValue("image/png", forHTTPHeaderField: "Content-Type")
request.setValue("aa", forHTTPHeaderField: "X-Auth-Token")
request.setValue("aaa", forHTTPHeaderField: "X-Project-ID")
request.setValue(UUID, forHTTPHeaderField: "UUID")
request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")
body.appendData("--\(boundary)\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData("Content-Disposition:form-data; name=\"test\"\r\n\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData("hi\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData("--\(boundary)\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData("Content-Disposition:form-data; name=\"file\"; filename=\"\(fname)\"\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData("Content-Type: \(mimetype)\r\n\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData(imageData)
body.appendData("\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData("--\(boundary)--\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
request.HTTPBody = body
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithRequest(request) { data, response, error in
if let response = response, data = data {
print(String(data: data, encoding: NSUTF8StringEncoding))
}
}
task.resume()
Bitte zeigen Sie ein Beispiel dafür, was eine gültige URL sein würde. Ihr "in der Befehlszeile" Beispiel wäre keine gültige URL. – Moritz
@EricD Die Interaktion mit der URL im Kommandozeilenbeispiel ist http (https://github.com/jkbrzt/httpie) und erst dann startet die URL - die URL beginnt mit link: 80. Also, zum Beispiel, abc/action 'X-Auth-Token: a3513cf345345345' 'X-Projekt-ID: 845c3' 'UUID: abcdef123456' Content-Type: image/png <~/Downloads/file.png – tesgoe
Dies ist * Nicht * eine URL, dies ist eine Befehlszeile mit Parametern. – Moritz