编辑代码

import UIKit
import Foundation
let API_Key = "EIpA1hdD7i5152EsiNqpUOF"
let Secret_Key = "p8EZWg4agjDOxABmKvBYSNyZ1YzGFqb_"
let token_host = "https://aip.baidubce.com/oauth/2.0/token?grant pemclient_credentials&client_id=\(API_Key) &client_secret=\ (Secret Key)"
var access_token =""
var expires_in :Int32 = 0
if let url = URL(string: token host) {
    RLSession.shared.dataTask(with: url) { (data,response,error) in
    if error != nil {
        print ("network error")
        else {
            if let json mtry? JSONSerialization.jsonObject(with: data!,options:.allowFragments) as? [String :Any] {
                access_token = json["access token"] as! String 
                expires_in = json["expires in"] as! Int32 
                print("--------access_token------") 
                print(access_token)
                print("--------expires time------") 
                print(expires in)
            }
        }
    }
    .resume ()
}
else {
    print("url error")
}

//以文本或者二进制方式读入源程序文件的Loader 
public struct Loader{
    static func readTxt(file url:URL) -> String? {
        do {
            let source = try String(contentsOf: url) 
            return source
        }
        catch {
            return nil
        }
        static func readBin(file url:URL) -> Data? {
            do {
                let data = try Data(contentsOf: url) 
                return data
            }
            catch {
                return nil
            }
        }
    }
}

//Resources中的文件,并把路径转化为URL
let path = Bundle.main.path(forResource:"qrcar.jpg", ofType: nil) 
let url = URL(fileURLWithPath: path!)
let data = Loader.readBin(file: url)
if(data == nil) {
    print("File failed to load")
}
let data_base64_str = data?.base64Encodedstring() 
let data_base64 = data?.base64EncodedData()
access_token = "24.2ec96a68f74a8429b0f07869929413ae25920001598921312.282335-21737249"
let carType_host = "https://aip.baidubce.com/rest/2.0/image-classify/v1/ car" + "?access token=" + "\(access_token)"
if let url = URL(string: carType_host) {
    var request = URLRequest(url:url)
    request.setValue("application/x-www-form-urlencoded",forHTTPHeaderField:"Content-Type")
    request.httpMethod = "POST"
    let csmNSCharacterSet(charactersIn:"/=+号").inverted
    let image_urlEncode = data base64 str!.addingPercentEncoding(withAllowedCharacters:cs)
    let postString ="image=\(image urlEncode!)&top num=5&baike num-1"
    request.httpBody = postString.data(using: .utf8)
    URLSession.shared.dataTask(with:request){ (data,response,error)in if error != nil {
        print("error")
    }
    else {
        let rs = String(data: data!,encoding:String.Encoding.utf8) print(rs!)
    }
}
.resume()
}

{ 
    "log id": 4368540366187197442,
    "location result":
    {
        "width": 386.4585876464844,
        "top":81.3405532836914,
        "height":183.9795532226562,
        "left":58.03330230712891
    },
    "result":
    [ 
        {
            "score":0.9767324924468994,
            "year":"2014-2017",
            "baike_info":
            {
              "baike_url": "/item/%E5%A5%87%E7%91%9EE5/4714",
              "image_url":
                  "/pic/5882b2b7d0a20cf47a91d7777c094b36acaf9910",
              "description":  
                  "2014 款奇瑞 E5 是国内科技家轿的引领者,带领消费者悦享领先科技。"},
            "name":"奇瑞E5"
            },
            {
                "score":0.007103727199137211,
                "name":"奇瑞旗云",
                "year":"2010-2013"
            },
            {
                "score":0.003686367534101009,
                "name":"奇瑞艾瑞泽 7",
                "year":"2016-2017"
            },
            { 
                "score":0.001757977530360222,
                "name":"奇瑞E3",
                "year":"2015-2017"
            },
            {
                "score":0.001047104829922318,
                "name":"奇瑞A5",
                "year":"2015"
            }
        ],
        "color result":"黑色"
}