编辑代码

fune sessionGetData(){
    //创建 URL 对象
    let urlstring -"http://www.tuling123.com/" 
    let url surl(stringiurlstring)
    //创建请求对象
    let request = URLRequest(url: url!)

    let session = URLSession.shared
    let dataTask = session.dataTask(with: request,
    completionHandler: {(data, response, error) -> Void in
    if error != nill{
        print(error.debugDescription)
    }else{
        let str - String(data: data!, encoding:tring.Encoding.utf8)
        print(str!)
    }
}) as URLSessionTask
// 使用 resume 方法启动任务 
dataTask.resume ()
}
fune sessionDownloadImage(){
     // 下载地址
    let url = URL(string: "http://hangge.com/blog/images/logo.png")
    //请求
    let request = URLRequest(url: url!)
    let session = URLSession.shared
    // 下载任务
    let downloadTask = session.downloadTask(with: request,
completionHandler: {
(location:URL?, response:URLResponse?, error:Error?)
-> Void in
         //输出下载文件原来的存放目录
         print("location:\(String(describing: location))")
         //location 位置转换
         let locationPath = location? path
         // 获取当前时间 
         let now = NSDate() 
         //当前时间的时间截
         let timeInterval:TimeInterval = now.timeIntervalSince1970
         let timeStamp = String(timeInterval)
         //拷贝到用户目录
         let documents:String = NSHomeDirectory() + "/Documents/\
(timeStamp).png"
         //创建文件管理器
         let fileManager = FileManager.default
         try! fileManager.moveItem(atPath: locationPath!, topath:
documents)
         print("new location:\(documents)")
     })
     //使用resume方法启动任务 
     downloadTask.resume()
}

$ sudo apachectl start | stop | restart
#LoadModule php5_module libexec/apache2/libphp5.so
$ sudo cp /etc/php.ini.default /etc/php.ini
<?php
phpinfo();
?>

<?php
/** php 接收流文件
* @param String $file接收后保存的文件名
* @return boolean
*/
function receiveStreamFile($receiveFile){
    $streamData = isset($GLOBALS['HTTP_RAW_POST_DATA'])? $GLOBALS['HTTP_
RAW_POST_DATA'] :'';
    if(empty($streamData)){
        $streamData = file_get_contents('php://input');
        }
    if($streamData!=''){
        $ret = file_put_contents($receiveFile, $streamData, true);
    }else{
        $ret = false;
    }
    return $ret;
}
//定义服务器存储路径和文件名
$receiveFile = $_SERVER["DOCUMENT_ROOT"]."/uploadFiles/swift.png"; 
echo $receiveFile;
$ret = receiveStreamFile($receiveFile);
echo json_encode(array('success'=>(bool)$ret));
?>

func sessionUploadPhp(){
    //上传地址
    let url = URL(string: “http://localhost/uploadSwift.php")
    //1.创建会话对象
    let session = URLSession.shared
    // 请求 
    var request = URLRequest(url:url!, cachePolicy: .reloadIgnoringCacheData) 
    request.httpMethod = "POST"
    // 上传数据流 
    let fileImage = Bundle.main.path(forResource: "bee1", ofType: "png") 
    let imgData = try! Data(contentsOf: URL(fileURLWithPath: fileImage!))
    let uploadTask = session.uploadTask(with: request as URLRequest, from: 
ingData) {
        (data:Data?, response:URLResponse?, error:Error?) -> Void in
        // 上传完毕后
        if error != nill {
            print(error!)
        }else{
        let str = String(data: data!, encoding: String.Encoding.utf8) 
        print("上传完毕: \(String(describing: str))")
        }
    }
    //使用 resume 方法启动任务 
    uploadTask.resume()
}

import UIKit
import Foundation
let API_Key = "EIpAlhdD7i5152EsiNqpUOF_"
let Secret_Key = "p8EZWg4agjDOxABmKvBYSNyZ1YzGFgb_"
let token_host = "https://aip.baidubce.com/oauth/2.0/token?grant_
type=client_credentials&client_id=\(API_Key)&client_secret=\(Secret_Key)"
var access_token = ""
var expires_in : Int32 = 0
if let url = URL(string: token host){
    URLSession.shared.dataTask(with: url) { (data, response, error) in
        if error != nil {
            print ("network error")
        }
        else {
            if let json = try? JSONSerialization.jsonObject(with: data!,
options: .allowFragments) as? [String :Any] {
                    access_token = json["access token"] as! String 
                    expires_in = json["expires in"l 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.2ec96a68f74a8429b0f07869929413ae.2592000.1598921312.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 cs = NSCharacterSet(charactersIn: "/=+%").inverted
let image_urlEncode = data_base64_str!.addingPercentEncoding(withA
llowedCharacters: 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/475143",
        "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": "黑色"
}