首页 > 解决方案 > Swift - 将 base64EncodedString 传递给 ASP.NET API

问题描述

我正在将 UIImages 转换为 base64EncodedString,如下所示:

let imageData:Data = UIImagePNGRepresentation(image!)!

let imageStr = imageData.base64EncodedString()

我正在尝试将它传递给 ASP.NET API 控制器,如下所示:

func postLandGradingImages(_ cellHolder: Array<ImagesData>, completion: @escaping (_ result: String) -> Void)
    {

        //Define Array of Dictionary

        var jsonArrayOfDictionaries = [[AnyHashable: Any]]()

        //For each item in the cellHolder

        for i in 0..<cellHolder.count {

            //Define Dictionary for grading data

            var jsonDict = [AnyHashable: Any]()

            //Set Lot

            jsonDict["jobNo"] = cellHolder[i].jobNo

            //Set Image

            jsonDict["imageBytes"] = cellHolder[i].ImageBytes

            //Add Dictionary to Array of Dictionary

            jsonArrayOfDictionaries.append(jsonDict)

            //Clear Dictionary

            jsonDict = [AnyHashable: Any]()

        }

        //Convert Array of Dictionary to JSON Data

        let jsonData: Data? = try? JSONSerialization.data(withJSONObject: jsonArrayOfDictionaries, options: .prettyPrinted)

        //Define our URL with the credentials

        let urlComponents = NSURLComponents(string: webservice + "PostGradingImages");

        //Assign Username

        urlComponents?.user = appDelegate.username;

        //Assign Password

        urlComponents?.password = appDelegate.password;

        //Define our URL String

        let url = urlComponents?.url;

        //Define URL Request

        var request = URLRequest(url: url!)

        //Set Header Values for request

        request.setValue("application/json", forHTTPHeaderField: "Content-Type")

        //Set Header Values for request

        request.setValue("application/json", forHTTPHeaderField: "Accept")

        //Set Request Method to POST

        request.httpMethod = "POST"

        //Set Request Body to JSON Data

        request.httpBody = jsonData

        let returnedData = String()

        //Start out URL Session to post data

        URLSession.shared.dataTask(with: request, completionHandler: {
            (data, response, error) in

            //If there is an error return false.

            if(error != nil){

                //return false

                completion(returnedData)

            }else{

                //Get the response

                let responseString = String(data: data!, encoding: .utf8)

                OperationQueue.main.addOperation({

                    //return true

                    completion(responseString!)

                })

            }

        }).resume()
    }

问题是,我的 .NET 代码不喜欢我的 base64EncodedString,我从 .NET 收到此错误:

你调用的对象是空的。

我想要完成的是将 UIImage 中的 base64EncodedString 发送到 .NET,以便我可以将其转换为字节,以便保存它。但是我的 .NET 不接受我的 base64EncodedString ....我做错了什么?

标签: iosswift

解决方案


推荐阅读