浏览代码

1.添加head请求

wenweiwei 4 年之前
父节点
当前提交
a1e41b1563

+ 1 - 1
BFNetRequestKit.podspec

@@ -8,7 +8,7 @@
 
 Pod::Spec.new do |s|
   s.name             = 'BFNetRequestKit'
-  s.version          = '0.1.3'
+  s.version          = '0.1.4'
   s.summary          = '使用Alamofire封装网络请求库'
   s.swift_version    = '5.0'
 # This description is used to generate tags and improve search results.

+ 34 - 0
BFNetRequestKit/Classes/BFNetRequestAdaptor.swift

@@ -59,6 +59,40 @@ public class BFNetRequestAdaptor: NSObject {
         }
     }
 
+    /// head请求
+    public class func headRequestData(url: String, parames: [String: Any]?, commonParams: [String: Any]? = nil, encoding: ParameterEncoding = URLEncoding.default, timeoutInterval: TimeInterval = 60, response: @escaping completeHander) {
+        SWNetRequest.headRequestData(url: url, parames: requestParams(encoding: encoding, parames: parames, commonParams: commonParams), encoding: encoding, timeoutInterval: timeoutInterval) { jsonObject, error, duration in
+            if jsonObject != nil {
+                let paraseData = paraseJsonObject(respondDict: jsonObject as! [String: Any])
+                response(paraseData.0, paraseData.1, paraseData.2, duration)
+            } else {
+                response(nil, nil, error, duration)
+            }
+        }
+    }
+    
+    /// 校验图片是否有效
+    /// - Parameter url: <#url description#>
+    /// - Returns: <#description#>
+    public class func imageValideRequestData(url: String, completionHandler: @escaping (Data?, URLResponse?, Error?) -> Void) {
+        if !SWNetRequest.bf_validURL(url: url) {
+            completionHandler(nil, nil, PQError(msg: "url错误", code: 1001))
+            return
+        }
+        // http://www.mxfjx.com/uploadfiles/2014/4/小鸡%20鸡蛋%20蛋生鸡%20鸡生蛋_conew1.gif
+        let tempUrl = SWNetRequest.bf_urlEncoded(url: url)
+        let reqUrl = URL(string: tempUrl)!
+        var request = URLRequest(url: reqUrl)
+        request.timeoutInterval = 1 // 设置超时1s
+        request.httpMethod = "HEAD"
+        let session = URLSession.shared
+        let headTask = session.dataTask(with: request) { data, response, error in
+            completionHandler(data, response, error)
+            debugPrint("head请求返回 = \(url),code = \((response as? HTTPURLResponse)?.statusCode ?? 0),response = \(String(describing: response))")
+        }
+        headTask.resume()
+    }
+    
     /// 处理请求参数
     /// - Parameters:
     ///   - encoding: <#encoding description#>

+ 20 - 2
BFNetRequestKit/Classes/SWNetRequest.swift

@@ -77,9 +77,16 @@ public class SWNetRequest: NSObject {
         }
     }
 
+    /// head请求
+    public class func headRequestData(url: String, parames: [String: Any]?, encoding: ParameterEncoding = URLEncoding.default, timeoutInterval: TimeInterval = timeoutInterval, response: @escaping completeHander) {
+        requestData(method: .head, encoding: encoding, url: url, parames: parames, timeoutInterval: timeoutInterval) { responseObject, error, timeline in
+            response(responseObject, error, timeline)
+        }
+    }
+
     /// 网络请求
     fileprivate class func requestData(method: HTTPMethod, encoding: ParameterEncoding, url: String, parames: [String: Any]?, timeoutInterval _: TimeInterval = timeoutInterval, response: @escaping completeHander) {
-        if !validURL(url: url) {
+        if !bf_validURL(url: url) {
             response(nil, PQError(msg: "非法地址", code: 0), nil)
             return
         }
@@ -110,7 +117,7 @@ public class SWNetRequest: NSObject {
         })
     }
 
-    public class func validURL(url: String?) -> Bool {
+    public class func bf_validURL(url: String?) -> Bool {
         if url == nil || (url?.count ?? 0) <= 4 || (!(url?.hasPrefix("http") ?? false) && !(url?.hasPrefix("https") ?? false)) {
             return false
         }
@@ -169,4 +176,15 @@ public class SWNetRequest: NSObject {
         }
         return addresses.first ?? "0.0.0.0"
     }
+
+    // 将原始的url编码为合法的url
+    public class func bf_urlEncoded(url: String) -> String {
+        let encodeUrlString = url.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)
+        return encodeUrlString ?? ""
+    }
+
+    // 将编码后的url转换回原始的url
+    public class func bf_urlDecoded(url: String) -> String {
+        return url.removingPercentEncoding ?? ""
+    }
 }

+ 9 - 5
Example/BFNetRequestKit/ViewController.swift

@@ -14,7 +14,10 @@ class ViewController: UIViewController {
     override func viewDidLoad() {
         super.viewDidLoad()
         // Do any additional setup after loading the view, typically from a nib.
-        BFNetRequestAdaptor.postRequestData(url: "https://speed.piaoquantv.com/longvideoapi/sys/app/config", parames: nil,commonParams: commonParams()) { respose, extData, error, duration in
+        BFNetRequestAdaptor.postRequestData(url: "https://speed.piaoquantv.com/longvideoapi/video/distribute/category/videoList/v2", parames: ["categoryJson": "{\"categoryId\":55}", "pageNo": 1, "pageSize": 4, "sceneType": 1, "pageSource": "speedApp-category", "h5MsgVid": "", "cutBoard": "", "cutBoardInfo": ""],commonParams: commonParams()) { respose, extData, error, duration in
+            
+        }
+        BFNetRequestAdaptor.imageValideRequestData(url: "http://www.mxfjx.com/uploadfiles/2014/4/小鸡%20鸡蛋%20蛋生鸡%20鸡生蛋_conew1.gif") { data, respnse, error in
             
         }
     }
@@ -27,21 +30,22 @@ class ViewController: UIViewController {
             "model": model, "system": systemName + " " + systemVersion, "brand": localizedModel, "platform": "iOS", "networkType": SWNetRequest.networkStatusDescription(), "clientIp": SWNetRequest.ipAddressDescription(),
         ]
         let commParams: [String: Any] = [
-            "appVersionCode": "1.1.0",
+            "appVersionCode": "344",
             "versionCode": "1.1.0",
             "system": systemName + " " + systemVersion,
             "systemVersion": systemName + " " + systemVersion,
             "appType": 13,
             "appId": 111111,
-            "machineCode": "getMachineCode()sdsdsdsdsd",
+            "machineCode": "43429BA1-6723-43B3-8B95-96782D289EA7",
             "networkType": SWNetRequest.networkStatusDescription(),
             "ipAddress": SWNetRequest.ipAddressDescription(),
             "clientTimestamp": Int64(Date().timeIntervalSince1970 * 1000),
             "platform": "iOS",
-            "versionName": "1.1.0",
+            "versionName": "2.6.6",
+            "pageSource": "speedApp-category",
     //        "sessionId": PQSingletoMemoryUtil.shared.sessionId,
     //        "subSessionId": PQSingletoMemoryUtil.shared.subSessionid ?? PQSingletoMemoryUtil.shared.sessionId,
-            "mid": "getMachineCode()sdsdsdsdsd",
+            "mid": "43429BA1-6723-43B3-8B95-96782D289EA7",
             "machineInfo": "",
     //        "abInfoData": dictionaryToJsonString(PQSingletoMemoryUtil.shared.abInfoData) ?? "",
             "requestId": "423232323232323",