2017-11-08 2 views
0

Ich versuche, die mehrteiligen Formulardaten, die Bilder mit einigen geschachtelten JSONs enthält, aber es funktioniert gut in IOS 10, aber für IOS 11 die Rückkehr Anforderung fehlgeschlagen: inakzeptabler Inhaltstyp: text/html Fehler. code, den ich wie unten gezeigt benutzt habe, lassen sie mich wissen, ob ich etwas verpasst habe.Afnetworking mehrteilige/formdata Rückgabeanforderung in IOS 11 fehlgeschlagen aber funktioniert gut in IOS 10

// AFNetworking Mehrteiliger

func AFhttpPost(url:String,postData:NSMutableDictionary, completionHandler:(result: NSMutableDictionary,error:NSString) -> Void){ 

    print("postData \(postData)") 

    var dataReceived:NSDictionary? 
    var mutableData:NSMutableDictionary? 
    if(self.checkNetConnectivity()) 
    { 
     let afHTTP :AFJSONRequestSerializer = AFJSONRequestSerializer() 


     afHTTP.setValue("multipart/form-data;", forHTTPHeaderField: "Content-Type") 
     afHTTP.setValue("application/json", forHTTPHeaderField: "Accept") 



     let request: NSMutableURLRequest = afHTTP.multipartFormRequestWithMethod("POST", URLString: url, parameters: nil, constructingBodyWithBlock: {(formData: AFMultipartFormData) in 

      let allKeys:NSArray = postData.allKeys 


      for item in allKeys.enumerate(){ 
       let currentKey = item.element as! String 

       if(currentKey == "signature"){ 
        let signatureImage = postData.objectForKey("signature") as! UIImage 

        let imageData = UIImagePNGRepresentation(signatureImage)! 
        formData.appendPartWithFileData(imageData , name: "uploaded_file[]", fileName: "signature\(index)x.png", mimeType: "image/png") 


       } 
       else 
       { //if it is jsonobject and its NSData just send as it is otherwise encode it 
        let postDataBytes:NSData? 
        if(postData.valueForKey(currentKey)! .isKindOfClass(NSData)){ 
         postDataBytes = postData.valueForKey(currentKey)! as? NSData 

         print("postDataBytes: \(currentKey):\(postDataBytes)") 

        }else{ 
         postDataBytes = postData.valueForKey(currentKey)!.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion:true)! 

         print("postDataBytes: \(currentKey):\(postDataBytes)") 

        } 
        formData.appendPartWithFormData(postDataBytes!, name: currentKey) 

       } 

      } 

      print("formFinalData \(formData)") 


      }, error: nil) 

     let accessToken = SingleTon().getAccessToken() 
     let authorisationheader = "\(accessToken)" 
     request.setValue(authorisationheader, forHTTPHeaderField: "Authorization") 

     let config = NSURLSessionConfiguration.defaultSessionConfiguration() 
     config.URLCache = nil 
     config.URLCredentialStorage = nil 
     // let session = NSURLSession(configuration: config) 




     let managerS : AFURLSessionManager = AFURLSessionManager.init(sessionConfiguration:config) 

     managerS.responseSerializer = AFJSONResponseSerializer() 




     let uploadTask = managerS.uploadTaskWithStreamedRequest(request, progress: nil) { (response, responseObject, error) -> Void in 

      do 
      { print("data \(responseObject)") 
       if(responseObject != nil){ 
        //dataReceived = try NSJSONSerialization.JSONObjectWithData(responseObject! as! NSData, options: []) as? NSMutableDictionary 
        dataReceived = responseObject! as? NSDictionary 

        mutableData = dataReceived!.mutableCopy() as? NSMutableDictionary 
        completionHandler(result:mutableData! ,error:"") 

       }else{ 
        completionHandler(result:[:],error:error!.localizedDescription) 


       } 

      } 
     } 
     uploadTask.resume() 
    }else{ 

     completionHandler(result: [:],error:ReapConectivityStatus) 
    } 


} 

Antwort

0

Dies bedeutet, dass der Server "text/html" anstelle der bereits unterstützten Typen sendet. Meine Lösung bestand darin, "text/html" zu acceptableContentTypes hinzuzufügen, die in der AFURLResponseSerialization-Klasse festgelegt wurden. Suchen Sie einfach nach "acceptableContentTypes" und fügen Sie @ "text/html" manuell zum Set hinzu.

+0

nein, es funktioniert nicht. – adarshaU

Verwandte Themen