当前位置: 首页 > news >正文

济南做外贸的网站公司吗织梦做的网站怎么样

济南做外贸的网站公司吗,织梦做的网站怎么样,网站的pv是什么,管理网络的软件有哪些Alamofire 官方仓库地址#xff1a;https://github.com/Alamofire/Alamofire xcode中安装和使用#xff1a;swift网络库Alamofire的安装及简单使用#xff0c;苹果开发必备-CSDN博客 Alamofire是一个基于Swift语言开发的优秀网络请求库。它封装了底层的网络请求工作… Alamofire 官方仓库地址https://github.com/Alamofire/Alamofire xcode中安装和使用swift网络库Alamofire的安装及简单使用苹果开发必备-CSDN博客 Alamofire是一个基于Swift语言开发的优秀网络请求库。它封装了底层的网络请求工作提供了更简单、更易用的接口大大简化了网络请求代码的编写。Alamofire提供了一套优雅且易于理解的API使得开发者可以轻松发起各种类型的HTTP请求。它支持GET、POST、PUT、DELETE等常用的请求方法并且提供了丰富的参数设置选项。Alamofire提供了强大的响应处理功能支持数据解析、文件上传和下载等常见需求。它基于Swift的特性和语法代码简洁、可读性强易于维护和扩展。 GET请求 get请求是最常见的一种请求方式了默认AF.request发送的就是get请求代码示例 // get请求func getData() {print(发送get请求)// 准备一个urllet url https://github.com/xiaoyouxinqing/PostDemo/raw/master/PostDemo/Resources/PostListData_hot_1.json// 使用Alamofile发起请求默认是GETAF.request(url).responseData(completionHandler: { res in// response.result为枚举类型所以需要使用switchswitch res.result {case let .success(Data):// 将Data类型的数据转为Json字符串let jsonString try? JSONSerialization.jsonObject(with: Data)// 打印json字符串print(success\(String(describing: jsonString)))case let .failure(error):print(error\(error))}// print(响应数据\(res.result))})}POST请求 发送post请求要带上method参数设置为.post携带的参数放parameters里面如果想让返回的数据直接是json格式的可以使用.responseJSON代码示例 // post请求func postData() {print(发送post请求)let urlStr https://api.weixin.qq.com/wxa/business/getuserphonenumber// payload 数据let payload [name: hibo, password: 123456]AF.request(urlStr, method: .post, parameters: payload).responseJSON { response inswitch response.result {case let .success(json):print(post response: \(json))case let .failure(error):print(error:\(error))}}} 其他的put/delete等请求和post一样只是参数不一样而已 post等请求参数解析 Parameter:Encodable 只要参数遵循Encodable协议那么最终ParameterEncoder都会把Parameter encode成需要的数据类型 举个例子 struct Login: Encodable {let email:Stringlet password:String }let login Login(email: aaa, password: bbb) AF.request(https://httpbin.org/post,method: .post,parameters: login,encoder: JSONParameterEncoder.default).response { response indebugPrint(response) } Headers请求头设置  设置请求头有三种方式 1.无参构造  /// 1. 无参构造 public init() {}/// 通过以下方式添加值 func add(name: String, value: String) func add(_ header: HTTPHeader) 2.通过 HTTPHeader 数组构造 /// 2. 通过 HTTPHeader 数组构造 public init(_ headers: [HTTPHeader])let headers: HTTPHeaders [HTTPHeader(name: Authorization, value: Basic VXNlcm5hbWU6UGFzc3dvcmQ),HTTPHeader(name: Accept, value: application/json) ]AF.request(https://httpbin.org/headers, headers: headers).responseJSON { response indebugPrint(response) } 3.通过key/value 构造  /// 3. 通过key/value 构造 public init(_ dictionary: [String: String])let headers: HTTPHeaders [Authorization: Basic VXNlcm5hbWU6UGFzc3dvcmQ,Accept: application/json ]AF.request(https://httpbin.org/headers, headers: headers).responseJSON { response indebugPrint(response) } 响应处理 1.Alamofire 提供了4种 Response序列化工具DataResponseSerializer 解析为Data // Response Handler - Unserialized Response func response(queue: DispatchQueue .main, completionHandler: escaping (AFDataResponseData?) - Void) - Self// Response Data Handler - Serialized into Data func responseData(queue: DispatchQueue .main,dataPreprocessor: DataPreprocessor DataResponseSerializer.defaultDataPreprocessor,emptyResponseCodes: SetInt DataResponseSerializer.defaultEmptyResponseCodes,emptyRequestMethods: SetHTTPMethod DataResponseSerializer.defaultEmptyRequestMethods,completionHandler: escaping (AFDataResponseData) - Void) - Self//示例 AF.request(https://httpbin.org/get).responseData { response indebugPrint(Response: \(response)) } 2.StringResponseSerializer 解析为String // Response String Handler - Serialized into String func responseString(queue: DispatchQueue .main,dataPreprocessor: DataPreprocessor StringResponseSerializer.defaultDataPreprocessor,encoding: String.Encoding? nil,emptyResponseCodes: SetInt StringResponseSerializer.defaultEmptyResponseCodes,emptyRequestMethods: SetHTTPMethod StringResponseSerializer.defaultEmptyRequestMethods,completionHandler: escaping (AFDataResponseString) - Void) - Self//示例 AF.request(https://httpbin.org/get).responseString { response indebugPrint(Response: \(response)) } 3.JSONResponseSerializer 解析为JSON // Response JSON Handler - Serialized into Any Using JSONSerialization func responseJSON(queue: DispatchQueue .main,dataPreprocessor: DataPreprocessor JSONResponseSerializer.defaultDataPreprocessor,emptyResponseCodes: SetInt JSONResponseSerializer.defaultEmptyResponseCodes,emptyRequestMethods: SetHTTPMethod JSONResponseSerializer.defaultEmptyRequestMethods,options: JSONSerialization.ReadingOptions .allowFragments,completionHandler: escaping (AFDataResponseAny) - Void) - Self //示例 AF.request(https://httpbin.org/get).responseJSON { response indebugPrint(Response: \(response)) } 下载文件 1.下载Data AF.download(https://httpbin.org/image/png).responseData { response inif let data response.value {let image UIImage(data: data)} } 2.下载到指定目录 let destination DownloadRequest.suggestedDownloadDestination(for: .documentDirectory) AF.download(https://httpbin.org/image/png, to: destination).response { response indebugPrint(response)if response.error nil, let imagePath response.fileURL?.path {let image UIImage(contentsOfFile: imagePath)} } 3.下载进度 AF.download(https://httpbin.org/image/png).downloadProgress { progress inprint(Download Progress: \(progress.fractionCompleted))}.responseData { response inif let data response.value {let image UIImage(data: data)}} 4.恢复下载 var resumeData: Data!let download AF.download(https://httpbin.org/image/png).responseData { response inif let data response.value {let image UIImage(data: data)} }// download.cancel(producingResumeData: true) // Makes resumeData available in response only. download.cancel { data inresumeData data }AF.download(resumingWith: resumeData).responseData { response inif let data response.value {let image UIImage(data: data)} } 上传文件 1.上传 Data let data Data(data.utf8)AF.upload(data, to: https://httpbin.org/post).responseDecodable(of: HTTPBinResponse.self) { response indebugPrint(response) } 2.上传文件 let fileURL Bundle.main.url(forResource: video, withExtension: mov)AF.upload(fileURL, to: https://httpbin.org/post).responseDecodable(of: HTTPBinResponse.self) { response indebugPrint(response) } 3.上传 Multipart Data AF.upload(multipartFormData: { multipartFormData inmultipartFormData.append(Data(one.utf8), withName: one)multipartFormData.append(Data(two.utf8), withName: two) }, to: https://httpbin.org/post).responseDecodable(of: HTTPBinResponse.self) { response indebugPrint(response)} 4.上传进度 let fileURL Bundle.main.url(forResource: video, withExtension: mov)AF.upload(fileURL, to: https://httpbin.org/post).uploadProgress { progress inprint(Upload Progress: \(progress.fractionCompleted))}.responseDecodable(of: HTTPBinResponse.self) { response indebugPrint(response)}
http://www.hkea.cn/news/14484499/

相关文章:

  • 河北网络公司网站建设做电商的进货网站
  • 网站建设与设计实验报告长沙小程序公司
  • 商业网站设计方案企业信息查询网站查询
  • 四川营销网站建设网站建设小组的五类成员
  • 在线之家官网成都百度seo搜索引擎优化培训
  • 南通网站建设维护哈 做网站
  • 织梦中英网站怎么做wordpress清除主题信息
  • 网站建设公司中企动力百度账户登录
  • 帝国管理系统导入新的模板怎么建网站?前端电商网站开发周期
  • 网站前端开发设计师网站登录
  • 做动画 的 网站有哪些解决wordpress打开慢
  • 公司食堂设计图郑州seo网站管理
  • 广州做企业网站哪家好常州网站制作工具
  • 建设校园网站的背景及意义一个网上商城多少钱
  • 眼镜商城网站建设方案网站开发的税率是多少钱
  • 开源网站后台管理系统制作网页的流程步骤
  • 宁夏政务网站建设标准京津冀协同发展四区指的是
  • wordpress 站标不显示百度广告费
  • 用凡科网做网站怎么保存到桌面wordpress fold主题
  • 网站建设与网页设计论文wordpress 发邮件 php
  • 安徽网站推广公司服务器租用多少钱
  • 淄博找能做网站的公司网络营销的五大优势
  • 怎么组建企业网站seo辅助工具
  • 官方网站建设的意义阳江网雨大精神病专科医院
  • 阿里巴巴国际站外贸流程lovephoto wordpress
  • js网站评论框怎样做网站变手机软件
  • 做网站是用源码还是模版泰州网站优化公司
  • 中午网站做google广告好吗一个公司如何做多个网站备案
  • 企业建站的费用临淄关键词网站优化培训中心
  • 爱有声小说网站捡个校花做老婆企业级网站开发需求分析