iOS開発-ネットワーク、HttpとHttps
6111 ワード
一、ネットワーク基礎
1.ネットワーク基盤
2.Http
3.Https
4 URL中国語トランスコード問題
1.ネットワーク基盤
001 : ?
:(1)
(2)
002
2-1 ( ipad APP)
2-2 ( - )
2-3 ( )
2-4 ( )
2-5 ( )
2.Http
001 URL
1-1 ( URL)
1-2 URL
a.
b. url ( \ \ )
: , 、
: ( ) IP ( )
: ( )
1-3
【file】 , file://( )
【ftp】 , ftp://
【mailto】 , mailto:
【http】 , , http://( )
002 http
2-1 http
a.
b.
c.
2-2 http
a. ( , , )
b. ( )
c. (1.1 , ,
, , )
2-3
a. :
b. :
003 GET POST
3-1 http
GET( )、POST( )、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT、PATCH
3-2 GET POST 【 】
GET
URL ? , & ,
http://ww.test.com/login?username=123&pwd=234&type=JSON
URL , URL , 1KB
POST
,POST ( )
3-3 【 , POST 】
a. , , POST
b.GET POST , \ , POST
c. ( ), GET
d. 、 、 , POST
004 iOS http
4-1
NSURLConnection 03
NSURLSession 13 iOS7 , NSURLConnection【 】
CFNetwork 、C
4-2
ASIHttpRequest
AFNetworking 【 】
MKNetworkKit
005 http
5-1
【 + · 】
5-2
【 + 】
5-3
a. ( )
b. , , ,
5-4
【200】:
【400】: ,
【404】:
【500】: ,
3.Https
1.https
1) HTTPS( :Hyper Text Transfer Protocol over Secure Socket Layer),
HTTP , HTTP 。
2) HTTP SSL ,HTTPS SSL, SSL。
URI scheme( ), http: 。 HTTP 。
3) https:URL HTTP, HTTPS HTTP / ( HTTP TCP )。
2.HTTPS HTTP :
1) https ca , , 。
2) http , ,https ssl 。
3) http https , , 80, 443。
4) http , ;HTTPS SSL+HTTP 、 , http 。
3.
1) HTTPS , ,
。
2)HTTPS ( VeriSign、Microsoft )
( “ ”)。
3) , HTTPS , https https ,
。
4) https , 。
4. 。
4.1 NSURLSession , 。
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]
delegate:self
delegateQueue:[NSOperationQueue mainQueue]];
NSURLSessionDataTask *task = [session dataTaskWithURL:[NSURL URLWithString:@"https://www.apple.com"]
completionHandler:^(NSData *data,
NSURLResponse *response,
NSError *error) {
NSLog(@"%@", [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);
}];
[task resume];
}
/*
HTTPS ,
,
Challenge: ( )
protectionSpace :
NSURLAuthenticationMethodServerTrust :
*/
- (void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge
completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition,
NSURLCredential *))completionHandler
{
// NSLog(@"didReceiveChallenge %@", challenge.protectionSpace);
NSLog(@" ");
// 1. ,
if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]) {
NSLog(@" ");
/*
NSURLSessionAuthChallengeUseCredential = 0,
NSURLSessionAuthChallengePerformDefaultHandling = 1, ( )
NSURLSessionAuthChallengeCancelAuthenticationChallenge = 2, ,
NSURLSessionAuthChallengeRejectProtectionSpace = 3, ,
*/
// NSURLCredential *credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust];
NSURLCredential *card = [[NSURLCredential alloc]initWithTrust:challenge.protectionSpace.serverTrust];
completionHandler(NSURLSessionAuthChallengeUseCredential , card);
}
}
4.2 AFN , ,AFN 。
4 URL中国語トランスコード問題
//1.
NSString *urlStr = @"http://120.25.226.186:32812/login2?username= &pwd=123";
NSLog(@"%@",urlStr);
//
urlStr = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSLog(@"%@",urlStr);
NSURL *url = [NSURL URLWithString:urlStr];