Преобразованная Base64String не удается загрузить в IMGUR API

%n является переносимым на платформах \n.

См. синтаксис строки форматирования в справочной документации :

'n' разделитель строк. Результатом является разделитель строк в конкретной платформе

blockquote>

-2
задан Potion 2 April 2019 в 18:25
поделиться

1 ответ

Похоже, я построил тело неправильно. Ниже приведено правильное решение, как это сделать. Я внимательно следил за сгенерированным http-кодом Postmans, чтобы создать следующий запрос:

func anonymousUpload(_ image: CGImage){

    // Convert the file to base64
    let base64Image:String = imageToBase64String(image)!

    // Create our url
    let url = URL(string: "https://api.imgur.com/3/image")!
    let request = NSMutableURLRequest.init(url: url)
    request.httpMethod = "POST"
    request.addValue("Client-ID " + imgurAPI.CLIENT_ID, forHTTPHeaderField: "Authorization")

    // Build our multiform and add our base64 image
    let boundary = NSUUID().uuidString
    request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")
    let body = NSMutableData()
    body.append("--\(boundary)\r\n".data(using: .utf8)!)
    body.append("Content-Disposition: form-data; name=\"image\"\r\n\r\n".data(using: .utf8)!)
    body.append(base64Image.data(using: .utf8)!)
    body.append("\r\n".data(using: .utf8)!)
    body.append("--\(boundary)--\r\n".data(using: .utf8)!)
    request.httpBody = body as Data

    // Begin the session request
    let task = URLSession.shared.dataTask(with: request as URLRequest){ data, response, error in
        if (error != nil){
            print("error: \(error)")
            return
        }

        print("response: \(response!)")
        let responseString = NSString(data: data!, encoding: String.Encoding.utf8.rawValue)
        print("response string: \(responseString!)")

    }
    task.resume()
}
0
ответ дан Potion 2 April 2019 в 18:25
поделиться