【问题标题】:swift post request encoding plus sign become white spaceswift post请求编码加号变成空白
【发布时间】:2016-04-26 03:55:00
【问题描述】:

最近我发现当我发送包含“+”号的帖子数据时,“+”会变成空白。例如 { 菜名:鱼 + 薯条 }。这导致服务器端无法读取数据。所以我尝试以下,我使用:

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

将我的请求编码为 UTF-8。但是,这一行导致我的帖子数据变为空。我不知道为什么会这样。 或者有没有更好的解决方案可以在 post 方法中将“+”号保持为自身?

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)
}}}}

【问题讨论】:

    标签: ios swift


    【解决方案1】:

    您可以尝试将您的 + 转换为其 ASCII 码。例如:

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

    Swift 3+

    let content = exampleString.replacingOccurrences(of: "+", with: "%2B")

    【讨论】:

    • 有没有办法让它通用而不是硬编码?
    猜你喜欢
    • 2014-07-24
    • 2014-05-12
    • 2013-07-19
    • 1970-01-01
    • 1970-01-01
    • 2016-11-25
    • 2018-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多