swift4.0 Http 请求
阅读原文时间:2023年07月14日阅读:1

//
// HttpHelper.swift
// NavigateDemo
//
// Created by yixin ran on 07/08/2017.
// Copyright © 2017 yixin ran. All rights reserved.
//
import UIKit

public class HttpHelper{
//单例
public static var Shared=HttpHelper();
// MARK:- get请求
func Get(path: String,success: @escaping ((_ result: String) -> ()),failure: @escaping ((_ error: Error) -> ())) {

    let url = URL(string: path.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed)!)

    let session = URLSession.shared

    let dataTask = session.dataTask(with: url!) { (data, respond, error) in

        if let data = data {

            if let result = String(data:data,encoding:.utf8){

                success(result)  
            }  
        }else {

            failure(error!)  
        }  
    }  
    dataTask.resume()  
}

// MARK:- post请求  
func Post(path: String,paras: String,success: @escaping ((\_ result: String) -> ()),failure: @escaping ((\_ error: Error) -> ())) {

    let url = URL(string: path)  
    var request = URLRequest.init(url: url!)  
    request.httpMethod = "POST"

    request.httpBody = paras.data(using: .utf8)

    let session = URLSession.shared  
    let dataTask = session.dataTask(with: request) { (data, respond, error) in

        if let data = data {

            if let result = String(data:data,encoding:.utf8){  
                success(result)  
            }

        }else {  
            failure(error!)  
        }  
    }  
    dataTask.resume()  
}  

}
class JsonHelper {
static let Shared=JsonHelper();
private let decoder=JSONDecoder();
private let encoder=JSONEncoder();
func ToJson(_ obj:T) -> String {
let data=try! self.encoder.encode(obj)
let str=String(data:data,encoding:.utf8)!
return str
}
func ToObject(_ data:String) -> T{
let obj=try! self.decoder.decode(T.self, from: data.data(using: .utf8)!)
return obj;
}
func GetData(_ str:String) -> Data {
return str.data(using: .utf8)!
}
func GetJson(_ data:Data) -> String {
return String(data:data,encoding:.utf8)!
}
}