2017-09-04 119 views
0

我正在使用Alamofire進行聯網請求。除了一個問題,它工作正常。alamofire響應base64字符串

manager!.request(mutableURLRequest).responseJSON { (response) in 
    switch response.result { 
     case .Success: 
      if let value = response.result.value { 
       print("JSON: \(value)") //**problem** 
      } 
     case .Failure(let error): 
      print(error) 
     } 

} 

服務器響應格式爲:

"result" : [ 
    { 
     "rec_name" : "1.jpg", 
     "data": { 
       "base64": "/9j/4AAQSkZ", 
       "__class__": "bytes" 
       }, 
     "id" : 9, 
     "name" : "1.jpg" 
    }, 
    { 
     "rec_name" : "2.jpg", 
     "data": { 
       "base64": "/9j/4AAQSkZ", 
       "__class__": "bytes" 
       }, 
     "id" : 10, 
     "name" : "2.jpg" 
    } 
    ], 
    "id" : 0 
} 

但我得到如下:數據(的base64字符串)是空

"result" : [ 
    { 
     "rec_name" : "1.jpg", 
     "data" : null, 
     "id" : 9, 
     "name" : "1.jpg" 
    }, 
    { 
     "rec_name" : "2.jpg", 
     "data" : null, 
     "id" : 10, 
     "name" : "2.jpg" 
    } 
    ], 
    "id" : 0 
} 

我錯過了什麼了base64字符串? 我認爲這是一個月前工作,但現在我得到問題。

如果我通過POSTMAN提出相同的請求,那麼它工作正常!

謝謝

+0

請確保它不是你的服務器端的變化!因爲如果它是在你之前說的那樣工作的話! – Lion

+0

在向服務器發送請求時,請檢查它是否已成功發佈。如果它成功發佈,那麼這是一個服務器問題。 – Priya

+0

@獅子,我通過郵遞員提出了相同的請求,然後它工作正常! – nirav

回答

1

我可以建議你庫SwiftyJSON。該庫允許您輕鬆地在Swift中解析JSON。此外,還有聯合Alamofire和SwiftyJSON的擴展AlamofireSwiftyJSON。這裏是你的要求的一個例子:

if let urlToTest = URL.init(string: "your_URL") { 

    Alamofire.request(urlToTest, 
         method: .get, 
         parameters: nil, 
         encoding: JSONEncoding.default, 
         headers: nil) 
    .responseSwiftyJSON(completionHandler: { (response:DataResponse<JSON>) in 

     let jsonResult = response.result 
     if let jsonResultValue = jsonResult.value { 

      if let resultArray = jsonResultValue["result"].array { 

       if resultArray.count > 0 { 

        if let itemData = resultArray[0]["data"].dictionary { 

         if let itemDataBase64 = itemData["base64"]?.string { 

          print("Base 64 field value \(itemDataBase64)") 
         } 
        } 
       } 
      } 
     } 
    }) 
}