swift4.0 Http 请求

//
//  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<T:Codable>(_ obj:T) -> String {
        let data=try! self.encoder.encode(obj)
        let str=String(data:data,encoding:.utf8)!
        return str
    }
    func ToObject<T:Codable>(_ 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)!
    }
}

 

posted @ 2017-08-07 13:04 Yixin-Ran 阅读(...) 评论(...) 编辑 收藏