IOS開發之網路開發工具,ios開發開發工具
IOS開發之網路開發工具
做移動端開發 經常會涉及到幾個模組:1、網路檢測 2、網路請求get和post請求 3、檔案上傳 4、檔案下載 5、斷點續傳
現在將這些一一分享給大家 ,也歡迎大家一起學習和討論 本例子採用AFNetWorking架構
網路檢測:
#pragma mark - Reachability Management (iOS 6-7)
//網路監聽(用於檢測網路是否可以連結。此方法最好放於AppDelegate中,可以使程式開啟便開始檢測網路)
- (void)reachabilityManager
{
//開啟網路監聽
[manager.reachabilityManager startMonitoring];
//監聽網路變化
[manager.reachabilityManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
switch (status) {
//當網路不可用(無網路或請求延時)
case AFNetworkReachabilityStatusNotReachable:
break;
//當為手機蜂窩資料網和WiFi時
case AFNetworkReachabilityStatusReachableViaWiFi:
case AFNetworkReachabilityStatusReachableViaWWAN:
break;
//其它情況
default:
break;
}
}];
//停止網路監聽(若需要一直檢測網路狀態,可以不停止,使其一直運行)
[manager.reachabilityManager stopMonitoring];
}
Get請求資料:
#pragma mark - GET Request (iOS 6-7)
//GET請求
- (void)methodGet
{
//致空請求
if (manager) {
manager = nil;
}
//建立請求
manager = [AFHTTPRequestOperationManager manager];
//佈建要求的解析器為AFHTTPResponseSerializer(用於直接解析資料NSData),預設為AFJSONResponseSerializer(用於解析JSON)
// manager.responseSerializer = [AFHTTPResponseSerializer serializer];
//發送GET請求
[manager GET:@"介面地址" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
//請求成功(當解析器為AFJSONResponseSerializer時)
NSLog(@"Success: %@", responseObject);
//請求成功(當解析器為AFHTTPResponseSerializer時)
// NSString *JSONString = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
// NSLog(@"success:%@", JSONString);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
//請求失敗
NSLog(@"Error: %@", error);
}];
}
POST請求:
#pragma mark - POST Request (iOS 6-7)
//POST請求
- (void)methodPost
{
//致空請求
if (manager) {
manager = nil;
}
//添加參數
NSDictionary *parameters = @{@"Key": @"Object",
@"Key": @"Object"};
//建立請求
manager = [AFHTTPRequestOperationManager manager];
//佈建要求的解析器為AFHTTPResponseSerializer(用於直接解析資料NSData),預設為AFJSONResponseSerializer(用於解析JSON)
// manager.responseSerializer = [AFHTTPResponseSerializer serializer];
//發送POST請求
[manager POST:@"介面地址" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
//請求成功(當解析器為AFJSONResponseSerializer時)
NSLog(@"Success: %@", responseObject);
//請求成功(當解析器為AFHTTPResponseSerializer時)
// NSString *JSONString = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
// NSLog(@"success:%@", JSONString);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
//請求失敗
NSLog(@"Error: %@", error);
}];
}
上傳:
#pragma mark - Upload Request (iOS 6-7)
//上傳(以表單方式上傳,以圖片為例)
- (void)methodUpload
{
//致空請求
if (manager) {
manager = nil;
}
//添加參數
NSDictionary *parameters = @{@"Key": @"Object",
@"Key": @"Object"};
//建立請求
manager = [AFHTTPRequestOperationManager manager];
//佈建要求的解析器為AFHTTPResponseSerializer(用於直接解析資料NSData),預設為AFJSONResponseSerializer(用於解析JSON)
// manager.responseSerializer = [AFHTTPResponseSerializer serializer];
//發送POST請求,添加需要發送的檔案,此處為圖片
[manager POST:@"介面地址" parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
//添加圖片,並對其進行壓縮(0.0為最大壓縮率,1.0為最小壓縮率)
NSData *imageData = UIImageJPEGRepresentation([UIImage imageNamed:@"圖片名字(注意尾碼名)"], 1.0);
//添加要上傳的檔案,此處為圖片
[formData appendPartWithFileData:imageData name:@"伺服器放圖片的參數名(Key)" fileName:@"圖片名字" mimeType:@"檔案類型(此處為圖片格式,如image/jpeg)"];
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
//請求成功(當解析器為AFJSONResponseSerializer時)
NSLog(@"Success: %@", responseObject);
//請求成功(當解析器為AFHTTPResponseSerializer時)
// NSString *JSONString = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
// NSLog(@"success:%@", JSONString);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
//請求失敗
NSLog(@"Error: %@", error);
}];
}
下載:
#pragma mark - Download Request (iOS 6-7)
//下載
- (void)methodDownload
{
//下載進度條
UIProgressView *downProgressView = [[UIProgressView alloc] initWithProgressViewStyle:UIProgressViewStyleDefault];
downProgressView.center = CGPointMake(self.view.center.x, 220);
downProgressView.progress = 0;
downProgressView.progressTintColor = [UIColor blueColor];
downProgressView.trackTintColor = [UIColor grayColor];
[self.view addSubview:downProgressView];
//設定存放檔案的位置(此Demo把檔案儲存在iPhone沙箱中的Documents檔案夾中。關於如何擷取檔案路徑,請自行搜尋相關資料)
//方法一
// NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
// NSString *cachesDirectory = [paths objectAtIndex:0];
// NSString *filePath = [cachesDirectory stringByAppendingPathComponent:@"檔案名稱"];
//方法二
NSString *filePath = [NSString stringWithFormat:@"%@/Documents/檔案名稱(注意尾碼名)", NSHomeDirectory()];
//列印檔案儲存的路徑
NSLog(@"%@",filePath);
//建立要求管理
operation = [[AFHTTPRequestOperation alloc] initWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@""]]];
//添加下載請求(擷取伺服器的輸出資料流)
operation.outputStream = [NSOutputStream outputStreamToFileAtPath:filePath append:NO];
//設定下載進度條
[operation setDownloadProgressBlock:^(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead) {
//顯示下載進度
CGFloat progress = ((float)totalBytesRead) / totalBytesExpectedToRead;
[downProgressView setProgress:progress animated:YES];
}];
//要求管理判斷請求結果
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
//請求成功
NSLog(@"Finish and Download to: %@", filePath);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
//請求失敗
NSLog(@"Error: %@",error);
}];
}
斷點續傳:
#pragma mark - Download Management (iOS 6-7)
//開始下載(斷點續傳)
- (void)downloadStart
{
[self methodDownload];
[operation start];
}
//暫停下載(斷點續傳)
- (void)downloadPause
{
[operation pause];
}
//繼續下載(斷點續傳)
- (void)downloadResume
{
[operation resume];
}
IOS7特性特有上傳和下載:
#pragma mark - Upload Request (iOS 7 only)
//上傳(iOS7專用)
- (void)methodUploadFor7
{
//致空請求
if (sessionManager) {
sessionManager = nil;
}
//建立請求(iOS7專用)
sessionManager = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
//添加請求介面
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"上傳地址"]];
//添加上傳的檔案
NSURL *filePath = [NSURL fileURLWithPath:@"本地檔案地址"];
//發送上傳請求
NSURLSessionUploadTask *uploadTask = [sessionManager uploadTaskWithRequest:request fromFile:filePath progress:nil completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) {
if (error) {
//請求失敗
NSLog(@"Error: %@", error);
} else {
//請求成功
NSLog(@"Success: %@ %@", response, responseObject);
}
}];
//開始上傳
[uploadTask resume];
}
#pragma mark - Download Request (iOS 7 only)
//下載(iOS7專用)
- (void)methodDownloadFor7
{
//致空請求
if (sessionManager) {
sessionManager = nil;
}
//建立請求(iOS7專用)
sessionManager = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
//添加請求介面
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@""]];
//發送下載請求
NSURLSessionDownloadTask *downloadTask = [sessionManager downloadTaskWithRequest:request progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
//設定存放檔案的位置(此Demo把檔案儲存在iPhone沙箱中的Documents檔案夾中。關於如何擷取檔案路徑,請自行搜尋相關資料)
NSURL *filePath = [NSURL fileURLWithPath:[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]];
return [filePath URLByAppendingPathComponent:[response suggestedFilename]];
} completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
//下載完成
NSLog(@"Finish and Download to: %@", filePath);
}];
//開始下載
[downloadTask resume];
}
源碼:http://download.csdn.net/detail/wangliang198901/7935199
嵌入式網路開發 IOS
ios 使用oject c 是應用程式層開發,可以用虛擬軟體在windows 下開發,工資待遇不錯的6000+,iphone 永遠都是真理;
android 是基於jave的,Google重寫的java虛擬機器,這塊可以做應用開發,也可以做驅動層開發,當然做驅動沒有那麼容易哦,需要linux驅動知識。
嵌入式開發,主要是包括行動裝置,軍工業,消費裝置,從mp3到smart tv。你說的可能是直通訊裝置吧。這塊需要硬體基礎,沒有單片機基礎,沒有一些mcu知識是不行的。這塊一般都是基於arm的mcu+wince vxworks ucos2 linux 等,至於上層應用有qt ,有minigui 什麼的圖形介面,錯綜複雜。
至於哪一個前景好,問一下,ios裡的軟體哪個做的好的掙錢多的是國產的,嵌入式網路這塊過內炒的還不是很火,不過每天的it新聞焦點一般都是移動互聯這塊,可見其前景了。
說句真理:要朝著自己的夢想,興趣去努力拚搏,充實愉快的人生才是完美的。什麼東西學好了都很有前途,做it 的工資都不會滴的
iOS 網路開發
手機端:IOS有很多 網路架構的,最經典的 ASHTTP
推薦 使用 AFNETWORK
伺服器端:看你熟悉哪種語言,原來是伺服器有個web服務,你的用戶端請求這個web服務,返回資料,資料的格式常常是 json,xml,或string
其他的就是 uikit的知識了,既然你做個單機app,那麼這個不是問題