Hallo ich arbeite mit http POST Daten und Bilder, es funktioniert gut, wenn die Wi-Fi/Internet-Verbindung verfügbar ist. Aber wenn der Schalter aus dem mobilen Daten/wifi es die einige Frage zeigt, wie folgt:Auch ohne Internetverbindung wie die Daten und Bilder in Server
error=Optional(Error Domain=NSURLErrorDomain Code=-1009 "The Internet connection appears to be offline." UserInfo={NSErrorFailingURLStringKey=http://moneymonkey.tokiiyo.com/api/policy, _kCFStreamErrorCodeKey=8, NSErrorFailingURLKey=http://moneymonkey.tokiiyo.com/api/policy, NSLocalizedDescription=The Internet connection appears to be offline., _kCFStreamErrorDomainKey=12, NSUnderlyingError=0x16ef25f0 {Error Domain=kCFErrorDomainCFNetwork Code=-1009 "(null)" UserInfo={_kCFStreamErrorDomainKey=12, _kCFStreamErrorCodeKey=8}}})
ich den Code für HTTP-POST-Methode verwenden, sind wie folgt:
func barButtonItemClicked(barButtonItem: UIBarButtonItem)
{
let myUrl = NSURL(string: "http://moneymonkey.tokiiyo.com/api/policy");
let typeItem: InsuranceType = InsuranceManager.sharedInstance.TypeArray[0]
//let typeItem = InsuranceManager.sharedInstance
let compItem = InsuranceManager.sharedInstance
let request = NSMutableURLRequest(URL:myUrl!);
request.HTTPMethod = "POST";
let param = [
"api_key" : "AiK58j67",
"api_secret" : "a#9rJkmbOea90-",
"phone" : "\(mobile)",
"policy_type" : "\(typeItem.name)",
"company" : "\(compItem.selectedCompany.cname)"
]
print("Policy_type: \(typeItem.name)")
print("Company: \(compItem.selectedCompany.cname)")
let boundary = generateBoundaryString()
request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")
let imageData = uploadImage?.highestQualityJPEGNSData
if(imageData==nil) { return; }
request.HTTPBody = createBodyWithParameters(param, filePathKey: "file[]", imageDataKey: imageData!, boundary: boundary)
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in
if error != nil {
print("error=\(error)")
return
}
// You can print out response object
print("******* response = \(response)")
// Print out reponse body
let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)
print("****** response data = \(responseString!)")
do{
_ = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers) as? NSDictionary
dispatch_async(dispatch_get_main_queue(),{
});
}
catch
{
// report error
print("Oops!! Something went wrong\(error)")
}
}
task.resume()
let alert = UIAlertController(title: "Message", message:"Your document was uploaded successfully to our Server.", preferredStyle: .Alert)
let action = UIAlertAction(title: "DONE", style: .Default) { _ in
// Put here any code that you would like to execute when
// the user taps that OK button (may be empty in your case if that's just
// an informative alert)
self.performSegueWithIdentifier("listSegue", sender: self)
}
alert.addAction(action)
self.presentViewController(alert, animated: true){}
}
func createBodyWithParameters(parameters: [String: String]?, filePathKey: String?, imageDataKey: NSData, boundary: String) -> NSData {
let body = NSMutableData();
if parameters != nil {
for (key, value) in parameters! {
body.appendString1("--\(boundary)\r\n")
body.appendString1("Content-Disposition: form-data; name=\"\(key)\"\r\n\r\n")
body.appendString1("\(value)\r\n")
}
}
let filename = "upload.png"
let mimetype = "image/jpeg"
body.appendString1("--\(boundary)\r\n")
body.appendString1("Content-Disposition: form-data; name=\"\(filePathKey!)\"; filename=\"\(filename)\"\r\n")
body.appendString1("Content-Type: \(mimetype)\r\n\r\n")
body.appendData(imageDataKey)
body.appendString1("\r\n")
body.appendString1("--\(boundary)--\r\n")
return body
}
func generateBoundaryString() -> String {
return "Boundary-\(NSUUID().UUIDString)"
}
extension NSMutableData {
func appendString1(string: String) {
let data = string.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)
appendData(data!)
}
}
Kann jemand bitte leite mich, wie man auch ohne Internetverbindung hochlädt. Vielen Dank im Voraus
Du kannst nicht. Wie können Sie auch ohne Netzwerkverbindung hochladen? – rmaddy