日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ios网络请求

發布時間:2025/7/14 编程问答 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ios网络请求 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天在公司開始著手做了一個項目,要和網絡接號對接的,有以下一點點小心得,上來分享一下:

首先說ios的網絡請求,方式有很多種,我把它分了兩種,一種是外框架型,一種是內框架;前都是應用了官方API以外的框架,后者則是相對;

?

-(void)testRequest
{
NSLog(@"test request...");
NSString *postUrl = @"url";
NSMutableDictionary *dlist = [[NSMutableDictionary alloc] init];


[dlist setObject:@"value" forKey:@"key"];
....

NSString *jsonStrPost = [self sendRequestTo:[NSURL URLWithString:postUrl] usingVerb:@"POST" withParameters:dlist];
NSLog(@"do post: jsonStrPost = %@", jsonStrPost);
}

上面用的就是有點像json的做法,ios的,呵!

下面再說另一種做法:

//quest
/*
*
* url:請求地址
* verb:請求方式
* parameters:請求參數
*/
-(NSString *)sendRequestTo:(NSURL *)url usingVerb:(NSString *)verb withParameters:(NSDictionary *)parameters{
NSString *jsonStr = nil;
NSData *body = nil;
NSMutableString *params = nil;
NSString *contentType = @"text/html; charset=utf-8";
NSURL *finalURL = url;
if(nil != parameters){
params = [[NSMutableString alloc] init];
for(id key in parameters){
NSString *encodedkey = [key stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

CFStringRef value = (__bridge CFStringRef)[[parameters objectForKey:key] copy];
CFStringRef encodedValue = CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, value,NULL,(CFStringRef)@";/?:@&=+$", kCFStringEncodingUTF8);
[params appendFormat:@"%@=%@&", encodedkey, encodedValue];
CFRelease(value);
CFRelease(encodedValue);
}
[params deleteCharactersInRange:NSMakeRange([params length] - 1, 1)];
}
//
if([verb isEqualToString:@"POST"]){
contentType = @"application/x-www-form-urlencoded; charset=utf-8";
body = [params dataUsingEncoding:NSUTF8StringEncoding];
}else{
if(nil != parameters){
NSString *urlWithParams = [[url absoluteString] stringByAppendingFormat:@"?%@", params];
finalURL = [NSURL URLWithString:urlWithParams];
}
}
NSMutableDictionary *headers = [[NSMutableDictionary alloc] init];
[headers setValue:contentType forKey:@"Content-Type"];
[headers setValue:@"text/html" forKey:@"Accept"];
[headers setValue:@"no-cache" forKey:@"Cache-Control"];
[headers setValue:@"no-cache" forKey:@"Pragma"];
[headers setValue:@"close" forKey:@"Connection"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:finalURL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
[request setHTTPMethod:verb];
[request setAllHTTPHeaderFields:headers];
if(nil != parameters){
[request setHTTPBody:body];
}
params = nil;
//
NSURLResponse *response;
NSError *error = nil;
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
if(error){
NSLog(@"something is wrong: %@", [error description]);
}else{
if(responseData){
jsonStr = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
}
}
return jsonStr;
}

?NSString *jsonStrPost = [self sendRequestTo:[NSURL URLWithString:postUrl] usingVerb:@"POST" withParameters:dlist];

下面是第三種了~有什么疑問可以留言,偶會??床┛偷牧?

NSString *requestString = [NSString stringWithFormat:@"url"];
// 數據內容轉換為UTF8編碼,第二個參數為數據長度
// NSData *requestData = [NSData dataWithBytes:[requestString UTF8String] length:[requestString length]];
// 請求的URL地址
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:requestString]];
NSLog(@"%@\n",requestString);
// 設置請求方式
//[request setHTTPMethod:@"get"];
// 設置請求內容
//[request setHTTPBody:requestData];
// 設置請求頭聲明
[request setValue:@"text/xml" forHTTPHeaderField:@"Content-type"];
// 執行請求
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];


// 輸出返回數據
NSString *returnString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@", returnString);

上面三種方法都有POST和GET兩種方式的其實他們也是差不多的,不過寫法不一樣而已

第四種用的是一個開源的框架,要導的包有點多,要注意了哦~

ASIFormDataRequest,或ASIHTTPRequest,這兩個東西不錯的哦,我這次的項目就是用這個東西做的

ASIFormDataRequest:

這個要引入的包有:(明天補上)

ASIFormDataRequest* req=[[ASIFormDataRequest alloc] init];
NSString* s_url=@"url";
req = [[ASIFormDataRequest alloc] initWithURL:[NSURL URLWithString:s_url]];
[req setRequestMethod:@"POST"];//@"GET""POST"
[req setDelegate:self];

[req setPostValue:value forKey:key];
.....


[req startAsynchronous];

結果返回時會自動調用以下方法

- (void)requestFinished:(ASIHTTPRequest *)request
{
int i = 0;
//亂碼的處理,呵
NSString * temp = [[[NSString alloc]initWithData:[request responseData] encoding:NSUTF8StringEncoding]autorelease];
NSArray * ttemp = [temp componentsSeparatedByString:@","];


}


ASIHTTPRequest


ASIHTTPRequest是簡單易用的,它封裝了CFNetwork API。使得與Web服務器通信變得更簡單。它是用Objective-C編寫的,可以在MAC OS X和iPhone應用中使用。

它適用于執行基本的HTTP請求和互動(或者說是反饋)。ASIFormDataRequest子類可以簡單的實現提交數據和文件。使用multipart/form-data

提供了以下:

一個從web服務器提交和獲取數據的接口

直接下載數據到內存或者本地文件系統里

能夠從本地提交文件,作為post數據的一部分。兼容HTML file input mechanism

可以訪問和修改http請求和響應header

獲得上傳下載的進度信息

異步請求和隊列,自動管理上傳下載隊列機制

cookie 支持

請求和響應的gzip支持

代理請求

?

ASIHTTPRequest設置

在iphone 項目中使用ASIHTTPRequest

1、添加一些必要的文件,復制以下文件到項目中去

ASIHTTPRquestConfig.h

ASInputStream.h

ASInputStream.m

ASIHTTPRequest.h

ASIHTTPRequest.h

ASINSStringAdditions.h

ASINSStringAdditions.m

ASIFormDataRequest.h

ASIFormDataRequest.m

ASINetworkQueue.h

ASINetworkQueue.m

iphone項目還必須包含以下文件

ASIAuthenticationDialog.h

ASIAuthenticationDialog.m

一個版本的Reachability類


添加必要的框架到項目中去

CFNetwork.framework

SystemConfiguration.framework

libz.1.2.3.dylib


配置Reachability

在iphone上,ASIHTTPRequest使用Apple的Reachability類。

Reachability有兩個版本,他們都能在ASIHTTPRequest發行文件的Reachability文件夾中找到。

2.0版本是最新的辦迸。如果你的項目是基于iphone os 3.x和更新的系統,你應該使用2.0版本的。包括.h和.m文件。保證在ASIHTTPRequestConfig.h文件中REACHABILITY_20_API的值為1

1.5是個老版本,它和iphone os 2.2.1-iphone os 3.0兼容。保證在ASIHTTPRequestConfig.h文件中REACHABILITY_20_API的值為0


在mac ox x項目中使用AHIHTTPRequest

為了在Mac os x項目中使用ASIHTTPRequest,你需要導入以下:

SystemConfiguration.framework + zlib

CoreService.framework

在Mac OS X上,CFNetwork 是CoreServices框架的一部分。除非你寫的是基于控制臺的應用程序


轉載于:https://www.cnblogs.com/chiefCTO/archive/2012/03/30/2426103.html

總結

以上是生活随笔為你收集整理的ios网络请求的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 色丁香婷婷 | 久久黄色一级片 | 久久97精品久久久久久久不卡 | 中国女人做爰视频 | 国产精品免费在线播放 | jizz一区| 国产αv| 国产91免费在线观看 | 欧美一区二区三区免费在线观看 | 91国产视频在线播放 | caoporn视频在线观看 | 99国产精品免费 | 日本不卡一区 | 激情综合影院 | av网站在线观看免费 | 最新中文字幕久久 | 亚洲视频一区二区三区在线观看 | 亚洲精品中文在线 | 成人日韩精品 | 一个人在线免费观看www | 免费观看91视频 | 色噜噜av | 手机在线永久免费观看av片 | 日韩免费在线播放 | 麻豆伦理片| 国产99久久久国产精品免费看 | 长篇高h乱肉辣文 | 在线你懂的视频 | 99riAv国产精品无码鲁大师 | 少妇熟女一区 | 日韩草逼视频 | 色婷婷免费视频 | 欧美成人乱码一区二区三区 | 免费污网站在线观看 | 黄瓜视频在线观看 | 美国式禁忌1980 | 日韩av一卡 | 自拍偷拍日韩 | 超碰在线免费播放 | 麻豆视频在线观看免费网站黄 | 又黄又色又爽的视频 | 激情欧美一区 | 一区二区三区亚洲精品 | 国产高清视频免费在线观看 | 久久久久久久久久久久Av | 久久日精品 | 国产福利精品在线观看 | 欧美性受xxxx黑人xyx | 怡红院国产 | 打屁股调教视频 | 国产白丝在线观看 | 欧美大片免费 | 秋霞欧洲 | 日韩中文字幕 | 丁香婷婷深情五月亚洲 | 亚洲熟妇无码一区二区三区导航 | 丁香婷婷综合激情五月色 | 最新的黄色网址 | www日韩在线 | 自拍偷拍国产视频 | 日本大片黄 | 国产在线97 | 亚洲第一视频网 | 秋霞午夜伦理 | av日韩在线播放 | 色哟哟无码精品一区二区三区 | 亚洲人掀裙打屁股网站 | 免费九九视频 | 国产精品偷乱一区二区三区 | 亚洲一区在线视频观看 | 日本做受 | www天天操 | 国产又粗又猛又色又 | 国产福利一区在线 | 日本中文字幕在线 | xxxx性视频| 亚洲 欧美 日韩 国产综合 在线 | 玉足女爽爽91 | 天堂av中文在线观看 | 日本免费久久 | 人人舔人人干 | 成人免费看片98欧美 | 91日批 | 亚洲第一区视频 | 亚洲 欧美 成人 | 欧洲亚洲成人 | 日本一级片在线播放 | 国产私密视频 | 亚洲乱码电影 | 成人网入口 | 免费成人结看片 | 国产51精品| 深夜久久久| 久草av在线播放 | 亚洲人网站| 欧美日韩69 | 在线播放a | 在线一二三区 | 日韩中文av |