swift 使用AFNetWorking 進行網路請求
1.
pod 'AFNetworking', '~> 3.1.0'
2.
建立網路請求工具 繼承於NSObject
import AFNetworking
enum FMResult {
case FMData
case FMJSON
case FMXML
}
enum FMRequestStyle {
case FMRequestJSON
case FMRequestString
}
class FLGAFNetWorkingTool: NSObject {
Get請求
func getUrl(url:String
let manager = AFHTTPSessionManager()
if headerFile.count != 0 {
for str in headerFile{
manager.requestSerializer.setValue(str.value as
}
}
switch result {
case .FMData:
manager.responseSerializer = AFHTTPResponseSerializer()
break
case .FMJSON:
manager.responseSerializer = AFJSONResponseSerializer()
break
case .FMXML:
manager.responseSerializer = AFXMLParserResponseSerializer()
break
}
manager.responseSerializer.acceptableContentTypes = ["application/json", "text/json", "text/javascript","text/html","text/css","text/plain"]
manager.get(url, parameters: body, progress: nil, success: { (task :URLSessionDataTask?, result : Any?) in
finished(result as AnyObject?, nil)
}) { (task : URLSessionDataTask?, error :Error?) in
finished(nil, error)
}
}
post請求
func postUrl(url:String,body:Any,result:FMResult,requsetStyle:FMRequestStyle,headerFile:NSDictionary,finished :@escaping (_ result : AnyObject?, _ error : Error?)-> ()){
let manager = AFHTTPSessionManager()
//3.傳送資料型別
switch requsetStyle {
case .FMRequestJSON:
manager.responseSerializer = AFJSONResponseSerializer()
break
case .FMRequestString:
manager.requestSerializer.setQueryStringSerializationWith({ (request:URLRequest, parameters:Any, error:NSErrorPointer) -> String in
return parameters as! String
})
break
}
//4.給網路請求新增請求頭///可能會用到
if headerFile.count != 0 {
for str in headerFile{
manager.requestSerializer.setValue(str.value as? String, forHTTPHeaderField: str.key as! String)
}
}
//5.網路請求返回值的型別
switch result {
case .FMData:
manager.responseSerializer = AFHTTPResponseSerializer()
break
case .FMJSON:
manager.responseSerializer = AFJSONResponseSerializer()
break
case .FMXML:
manager.responseSerializer = AFXMLParserResponseSerializer()
break
}
//2.設定網路請求返回值支援的引數型別
manager.responseSerializer.acceptableContentTypes = ["application/json", "text/json", "text/javascript","text/html","text/css","text/plain"]
manager.post(url, parameters: body, progress: nil, success: { (task :URLSessionDataTask?, result : Any?) in
finished(result as AnyObject?, nil)
}) { (task : URLSessionDataTask?, error :Error?) in
finished(nil, error)
}
}
}
3. 呼叫方法
//// 獲取資料=====)
func getTopicVideosLieBiao(tag:NSString,withStart: NSInteger, withLimit: NSInteger,finished :@escaping (_ result : FLGTopicZuoPinModel?, _ error : Error?)-> ()){
let tool = FLGAFNetWorkingTool()
let url = String(format:"%@/video/getVideosByActivityTag?activityTag=%@&type=0&start=%ld&limit=%ld",arguments:[BASEADDRESS,tag,withStart,withLimit])
/// 網址中有中文的處理
let urlinput = url.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed)
tool.getUrl(url: urlinput!, body: [:], result:FMResult.FMJSON , headerFile: [:]){ (result:AnyObject?, error:Error?) in
if error != nil{
finished(nil, error)
}else{
let jsonDic = result as! NSDictionary
/// 字典轉model。。。swift推薦HandyJSON
let model = FLGHotAutherModel.deserialize(from: jsonDic)
finished(model, nil)
}
}
}
HandyJSON的使用
pod 'HandyJSON', '~> 4.0.0-beta.1'
建立一個model檔案 繼承自nsobject
import UIKit
import HandyJSON
struct FLGHotAutherBody: HandyJSON {
var nicName: String?
var header: String?
var id: Int?
var sex: Int?
}
class FLGHotAutherModel: HandyJSON(此處直接把NSObject替換掉) {
var customMessage: String?
var customCode: String?
var state: Bool?
var body: [FLGHotAutherBody]?(表示body裡面是陣列)
var body: FLGHotAutherBody?(表示body裡面是字典)
required init() {}
}
相關推薦
swift 使用AFNetWorking 進行網路請求
1. pod 'AFNetworking', '~> 3.1.0' 2. 建立網路請求工具 繼承於NSObject import AFNetworking enum FMResult { case FMData case FMJSON
使用AFNetworking 3.0庫進行網路請求時,取消單個佇列和全部佇列的方法(取消網路請求)
專案中有時會有這種情況,當介面正在請求資料,但資料為返回之前。返回到上一個介面,這種情況下,應取消此介面的網路請求。此篇就是為了處理此種情況下的操作,可 以取消單個請求佇
android中Okhttp框架進行網路請求的工具類()
package com.example.utils; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Iterat
智慧廚房重構-Retrofit和RxJava進行網路請求
上一篇部落格智慧廚房重構-MVP架構中我們簡單談了一下MVP的使用方法,使用MVP介面的方式讓我們的程式碼已經很簡單明瞭了,但是我告訴你還不夠,使用了本篇的Retrofit和RxJava後讓你的程式碼美如畫。對,就是美如畫。 1.Retrofit的簡單介紹
關於retrofit進行網路請求時發生的奇怪錯誤
在我們進行的網路請求中,伺服器得到的資料是亂的,具體混亂格式及情況如下: 1.api介面如下: 2.建立retrofit例項: 3.網路工具類的單例化 4.提供一個對外的方法 5.在activity裡面呼叫api及網路工具類 然後我們傳入一個map集合到getal
Httpurlconnection進行網路請求+ListView
Httpurlconnection進行網路請求+ListView** 第一步:找控制元件設定值監聽在MainActivity中 protected void onCreate(Bundle savedInstanceStat
RN中使用fetch進行網路請求的幾種場景和姿勢
1. 對於標準的輸入json body的請求,我們需要使用json.stringify轉換之然後放入body.2. 對於application/x-www-form-urlencode格式的請求介面,我
RxAndroid+OKHttp進行網路請求
Rx(Reactive Extensions)指響應式程式設計,本質是觀察者模式,是以觀察者和訂閱者為基礎的非同步響應方式,它是一種程式設計思想的突破。 Rxandroid有四個基本的概念:Observable(被觀察者)、Observer(觀察者)、subscribe
moya + RxSwift 進行網路請求
1.關於moya 如在OC中使用AFNetworking一般,Swift我們用Alamofire來做網路庫.而Moya在Alamofire的基礎上又封裝了一層: 官方說moya有以下特性(我也就信了): 編譯時檢查正確的API端點訪問. 使你定義不同
利用Handler進行網路請求
上一篇理解了Android系統中Handler的機制,見Android中的Handler機制解析,那麼我們就來用Handler製作一個簡易的網路請求框架。 如下圖: 解釋一下:UI在request的時候傳入UI中的Handler,同時將請求的Runnab
requests進行網路請求與urllib2進行網路請求進行比較
同一臺計算機,同一個環境下,獲取LOL貼吧前二十頁內容,urllib2用時18.8280000687,而採用requests進行網路請求耗14.8680000305。綜上來講,選用第三方的requests進行網路請求效率比較高。但是,依然不夠好,如果我們採用,多
Android使用Retrofit進行網路請求
Retrofit 簡介 用於Android和Java平臺的一款型別安全的HTTP客戶端,通過一個Java介面實現HTTP請求物件,如下: public interface Github { @GET("/repos/{owner}/{repo}/
RxVolley進行網路請求(get方式),獲取json資料
1、新增依賴: compile 'com.kymjs.rxvolley:rxvolley:1.1.4'//在app 下的build.gradle 裡 2、聚合資料申請微信精選介面,獲取APP-
OkHttpClient 進行網路請求
package com.example.mvpdemotwo.modle; import android.util.Log; import android.widget.Toast; import com.example.mvpdemotwo.MainActivity; i
使用Kotlin進行網路請求+Glide載入圖片
compile 'io.reactivex.rxjava2:rxandroid:2.0.1' compile 'io.reactivex.rxjava2:rxjava:2.1.7' compile 'com.squareup.retrofit2:retrofit:2.3.0
AFNetworking進行https請求遇到的錯誤和解決方式
1、錯誤一:Error Domain=NSURLErrorDomain Code=-999 請求取消。 導致原因:1、//一個頁面沒有被完全載入之前收到下一個請求,此時迅速會出現此error,erro
通過代理模式,對第三方網路請求框架進行封裝,實現任意切換網路框架
最近在網上學習了一篇課程,講的是通過代理模式對第三方框架進行封裝。 感覺講的很不錯,受益良多,特此記錄。 首先什麼是代理模式? 代理模式就是:為其他物件提供一種代理,以控制對這個物件的訪問。 舉個例子:沒空下去吃飯,找個同事幫忙買飯就是代理模式;平常租房子, 嫌麻
Swift網路請求庫Alamofire
Alamofire由cnoon大神編寫的基於swift的網路請求庫 Github下載地址 [TOC] 執行限制: iOS 8.0+ / Mac OS X 10.9+ / tvOS 9.0+ / watchOS 2.0+ Xcode 7.3+ Cocoa
Swift使用Alamofire實現網路請求
Alamofire是一個用Swift編寫的HTTP網路庫,由此前熱門開源專案AFNetworking的的作者mattt開發,可非常簡單地用於非同步網路通訊。 要獲取最新版本的 Alamofire,前往https://github.com/Alamofire/Alamofire然後單擊網頁右邊
Android中的Https網路請求get和post 不進行認證
HTTPS(全稱:Hyper Text Transfer Protocol over Secure Socket Layer)是通過證書認證、資料加密打造的一條安全的HTTP通道,也就是安全版HTTP,一般在金融行業用到的比