SDK包(object c版) 由@Aevit 提供

2018-11-21 21:27 更新
該文檔由 @Aevit 提供

6.4.1 使用說明

將框架目錄下的 ./SDK/Objective-C/ 目錄中的全部代碼拷貝到項目里面即可使用。如:

請求方式,可以使用系統(tǒng)的NSURLSession,或第三方的網(wǎng)絡請求庫等
這里我們使用第三方的AFNetworking,進行二次封裝(https://github.com/AFNetworking/AFNetworking)
如需使用其他網(wǎng)絡請求方式(如NSURLSession),請繼承自PhalApiClient,重寫request方法即可,可參考AFNPhalApiClient

6.4.2 代碼示例

如下是使用的代碼場景片段。

首先,我們需要導入SDK包:

#import "AFNPhalApiClient.h"

然后,準備按以下方法實現(xiàn)接口請求即可:

// 待POST的參數(shù)
NSDictionary *params = @{@"demo_key_1": @"your_key", @"demo_key_2": @"1.0"};

// 使用AFNPhalApiClient
[[[[[AFNPhalApiClient sharedClient] withHost:@"http://api1.aevit.xyz/"] withService:@"Default.Index"] withParams:params] requestWithFormDataBlock:^(id formData) {
    // 如需上傳文件(圖片等),請參照如下格式
    [formData appendPartWithFileData:UIImageJPEGRepresentation([UIImage imageNamed:@"head.JPG"], 1) name:@"file" fileName:@"image.jpg" mimeType:@"image/jpeg"];
} completeBlock:^(id resultObject) {
    PALog(@"resultObject: %@", resultObject);
} failureBlock:^(NSError *error) {
    PALog(@"error: %@", error);
}];

// 打印url查看
PALog(@"total url: %@", [[AFNPhalApiClient sharedClient] printTotalUrlStr]);

6.4.3 運行效果

運行后,查詢log,可以看到:

可以注意到,調(diào)用完成后,會有接口請求的鏈接和返回的結(jié)果,如:

2015-10-19 18:28:01.503 PhalApiClientDemo[23161:1199740] total url: http://api1.aevit.xyz/?service=Default.Index&demo_key_2=1.0&demo_key_1=your_key

2015-10-19 18:28:01.536 PhalApiClientDemo[23161:1199740] resultObject: {
    data =     {
        content = "PHPer\U60a8\U597d\Uff0c\U6b22\U8fce\U4f7f\U7528PhalApi\Uff01";
        time = 1445250481;
        title = "Hello World!";
        version = "1.2.1";
    };
    msg = "";
    ret = 200;
}

6.4.4 擴展你的過濾器和結(jié)果解析器

(1)擴展過濾器

當服務端接口需要接口簽名驗證,或者接口參數(shù)加密傳送,或者壓縮傳送時,可以實現(xiàn)此過濾器,以便和服務端操持一致。

當需要擴展時,分兩步。首先,需要實現(xiàn)過濾器接口:


@interface MyFilter : PhalApiClientFilter
@end

@implementation PhalApiClientFilter
/**
 *  接口過濾器
 *  可用于接口簽名生成
 *
 *  @param service 接口服務名稱
 *  @param params  接口參數(shù),注意是mutable變量,可以直接修改
 */
- (void)filter:(NSString*)service params:(NSMutableDictionary*)params {
    // 在此對接口進行過濾
}
@end

然后設置過濾器:

[[[[[[AFNPhalApiClient sharedClient] withHost:BASE_URL] withService:@"Default.Index"] withParams:params]
      withFilter:[MyFilter new]] // filter
     requestWithFormDataBlock:^(id formData) {
    } completeBlock:^(id resultObject) {
    } failureBlock:^(NSError *error) {
}];

(2)擴展結(jié)果解析器

當返回的接口結(jié)果不是JSON格式時,如XML,請上google搜索“AFNetworking XML”相關(guān)資料即可)。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號