SerializationFailure error while posting data with

2019-09-07 01:03发布

I am trying to save some text data and an image to server using Alamofire but I am getting following error:

FAILURE: responseSerializationFailed(Alamofire.AFError.ResponseSerializationFailureReason.jsonSerializationFailed(Error Domain=NSCocoaErrorDomain Code=3840 "Invalid value around character 0." UserInfo={NSDebugDescription=Invalid value around character 0.}))

My Code:

internal func postContent(forApi Name:String, image:UIImage?, withData payload:[String: String], success: ((_ response:[String: AnyObject])->Void)?, failure: ((Error)->Void)?) {
    //create Alamofire request
    //if everything was fine call success block with people array passed into it
    //if failure occurred, call failure block with error.
    if(isConnectedToNetwork()){
        let url = SharedConstants.baseURL+Name
        print("url "+SharedConstants.baseURL+Name)

        Alamofire.upload(multipartFormData: { (multipartFormData) in
            if let img = image {
                multipartFormData.append(UIImageJPEGRepresentation(img, 0.5)!, withName: "photo_path", fileName: "swift_file.jpeg", mimeType: "image/jpeg")
            }

            for (key, value) in payload {
                multipartFormData.append(value.data(using: .utf8)!, withName: key)
            }
        }, to: url, method: .post , headers:nil, encodingCompletion: { (result) in
            switch result {
            case .success(let upload, _, _):

                upload.responseJSON(completionHandler: { (response) in
                    print(response.request)  // original URL request
                    print(response.response) // URL response
                    print(response.data)     // server data
                    print(response.result)   // result of response serialization

                    if let JSON = response.result.value {
                        print(JSON)
                        success!(JSON as! [String: AnyObject])
                    }
                    else{
                        failure!(ErrorType.noRecordFound)
                    }
                })
            case .failure(let error):
                print(error)
            }
        })
    }
    else{
        failure!(ErrorType.internetNotWorking)
    }
}

Thanks in advance

4条回答
Melony?
2楼-- · 2019-09-07 01:41

FrontEnd send parameters:

 {
"delivery_method": [{
    "vehicle_type": "walk",
    "vehicle_id": "1",
    "vehicle_color": "",
    "vehicle_brand": "",
    "vehicle_image": "",
    "vehicle_number": "",
    "mode_type": "1",
    "vehicle_model": ""
}, {
    "vehicle_type": "scooter",
    "vehicle_id": "4",
    "vehicle_color": "",
    "vehicle_brand": "",
    "vehicle_image": "",
    "vehicle_number": "",
    "mode_type": "1",
    "vehicle_model": ""
}]
}

When I parse JSON like this JSON.parse(params[:delivery_method]) throw error. So we can create a parameter to json.

data=JSON.parse(params[:delivery_method].to_json) # no exception.
查看更多
Rolldiameter
3楼-- · 2019-09-07 01:44

The iOS code is correct, there was problem in backend code. The json was not being properly formed. I corrected the json formation in backend and it started working fine.

查看更多
女痞
4楼-- · 2019-09-07 01:45
let headers:HTTPHeaders = ["Authorization": "Bearer " + token2Save]
let moreheaders:Parameters = ["Dropbox-API-Arg": ["path":sourcePath]]

Alamofire.request("https://content.dropboxapi.com/2/files/download", parameters: moreheaders, encoding: URLEncoding(destination: .queryString), headers: headers).responseJSON { feedback in
        guard feedback.result.value != nil else {
            print("Error: did not receive data", print("request \(request) feedback \(feedback)"))
            return

URLEncoding(destination: .queryString), headers: headers).responseJSON

Replace responseJSON with responseString and check your response  from webservice.. it will lead to get the error line.

Refer:

https://stackoverflow.com/a/43041931/5215474

Replace responseJSON with responseString and check your response from webservice.. it will lead to get the error line.

查看更多
孤傲高冷的网名
5楼-- · 2019-09-07 02:02

Check the path in the url may be you are missing some folder.

查看更多
登录 后发表回答