栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

IOS15之swift的Alamofire 5.4框架的网络封装

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

IOS15之swift的Alamofire 5.4框架的网络封装

IOS15之swift的Alamofire 5.4框架的网络封装

此Alamofire 版本较高,是基于IOS15 和最新的 Alamofire 5.4.4 版本,截止我发稿的时候,最新版本,网上其他框架的版本较低,api早就淘汰了,或者其他写法,(对回调函数所使用到的关键字@escaping)要重点掌握
后台我采用Java 的springBoot进行封装测试的。
涉及swift基础语法,cocoaPods的使用,swift的闭包,回调,swift5.5语法新特性,单例模式的使用等,类方法的定义,Alamofire 的get,post,put ,delete请求,带参数,或者不带参数,都要拿捏的非常准备到位

	//
//  NetworkTools.swift
//  Alamofire1
//
//  Created by lujun on 2021/10/2.
//

import UIKit
import Alamofire

enum MethodType {
    case GET
    case POST
}

class NetworkTools{
    //类方法
    class func requestData(type: MethodType,urlString: String, parameters: [String : Any]? = nil,finishedCallback : @escaping ( _ results : Any) -> ()){
//        let type1 = type==MethodType.GET ? ".get" : ".post"
        if(type==MethodType.GET){
            Alamofire.AF.request(urlString).responseJSON { (response) in
                switch response.result {
                case .success(let json):
                    finishedCallback(json)
                    break
                case .failure(let error):
                    print("error:(error)")
                    break
                }
            }
        }
        if(type==MethodType.POST){
            Alamofire.AF.request(urlString, method: .post, parameters: parameters).responseJSON { (response) in
                switch response.result {
                case .success(let json):
                    finishedCallback(json)
                    break
                case .failure(let error):
                    print("error:(error)")
                    break
                }
            }
        }
    }
    //类方法
    class func requestDataWithParam(type: MethodType,urlString: String, parameters: [String : Any],finishedCallback : @escaping ( _ results : Any) -> ()){
        AF.request(urlString, parameters: parameters).responseJSON { (response) in
            switch response.result {
            case .success(let json):
                finishedCallback(json)
                break
            case .failure(let error):
                print("error:(error)")
                break
            }
        }
    }
}

测试代码如下:

//
//  ViewController.swift
//  Alamofire1
//
//  Created by lujun on 2021/10/2.
//

import UIKit
import Alamofire

class ViewController: UIViewController {
    
     override func viewDidLoad() {
        super.viewDidLoad()
        NetworkTools.requestDataWithParam(type: .GET, urlString: "http://localhost:8081/demo3",parameters: ["sn":"lujun"]) { result in
            print(result)
        }
    }
    func getRequest(){
        let url = "https://httpbin.org/get"
        Alamofire.AF.request(url).responseJSON { (response) in
            switch response.result {
            case .success(let json):
                print(json)
                // Success in request and do a async or sync(NOT UI) task here.
                break
            case .failure(let error):
                print("error:(error)")
                break
            }
        }
    }
    func postRequest(){
        let url = "https://httpbin.org/post"
        Alamofire.AF.request(url, method: .post, parameters: ["name":"jack","password":"123456"]).responseJSON { (response) in
            switch response.result {
            case .success(let json):
                print(json)
                break
            case .failure(let error):
                print("error:(error)")
                break
            }
        }
    }
    
}


Java 后台

package com.example.demo.controller;
import com.example.demo.dao.User;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
@RestController
public class DemoController {
    @GetMapping(value = "/demo")
    public String test2(String sn){
        System.out.println(sn);
        return "test";
    }
    @GetMapping(value = "/demo3")
    public Object test23(String sn){
        Map m1 =  new HashMap();
        System.out.println(sn);
        User user = new User("lujun", 18, "123@qq.com");
        m1.put("u1",user);
        return m1;
    }
}

项目文件名在我的资源文件下。名称是Alamofire1.zip

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/287022.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号