2016-04-26 4 views
1

Kürzlich fand ich heraus, dass, wenn ich eine Post-Daten senden, die ein "+" Zeichen enthalten, wird das "+" Leerzeichen werden. zum Beispiel {Gerichtname: Fisch + Chips}. Diese Cause-Server-Seite kann keine Daten lesen. Also versuche ich folgende, ich benutze:Swift Post Anfrage Codierung plus Zeichen werden Leerraum

request.setValue ("application/json; charset = utf-8", forHTTPHeaderField: "Content-Type")

zu kodieren, meine Anfrage auf UTF-8 Diese Zeile führt jedoch dazu, dass meine Postdaten leer sind. Ich habe keine Ahnung, warum das passiert. Oder gibt es eine bessere Lösung, um "+" Zeichen während der Post-Methode zu behalten?

func PostMethod(url:NSURL,Data:String) { 

    let request = NSMutableURLRequest(URL: url) 
    let session = NSURLSession.sharedSession() 
    let submitContent = Data 
    request.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type") 
    request.HTTPMethod = "POST" 
    request.HTTPBody = submitContent.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true) 


    //print("——request——") 
    //print(request) 

    let task = session.dataTaskWithRequest(request){ 
     data, response, error in 


     if data != nil{ 

      let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding) as! String 
      print(responseString) 

      let jsonall = self.commonControl.StringToJson(responseString) 
      if let dataFromString = jsonall["body"].stringValue.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false) { 
       let json = JSON(data: dataFromString) 
}}}} 

Antwort

4

können Sie versuchen, konvertieren Sie Ihre + in seine ASCII-Code. Zum Beispiel:

let content = exampleString.stringByReplacingOccurrencesOfString("+", withString: "%2B", options: [], range: nil)