네트워크 요청 처리

6636 단어
GET:
// 1. OC 
NSString *urlStr = [NSString stringWithFormat:@"%@?query=%@®ion=%@&output=json&ak=6E823f587c95f0148c19993539b99295", kBusinessInfoURL, @" ", @" "];
//  , URLEncode
NSString *newUrlStr = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
// 2. URL , NSURL
NSURL *url = [NSURL URLWithString:newUrlStr];
// 3. 
NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:10];
//  
NSURLResponse *response = nil;
NSError *error = nil;
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
POST:
// 1. OC 
    NSString *urlStr = [NSString stringWithFormat:@"%@", kVideoURL];
    // 2. NSURL 
    NSURL *url = [NSURL URLWithString:urlStr];
    // 3. 
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    // 4. 
    NSString *parmStr = @"method=album.channel.get&appKey=myKey&format=json&channel=t&pageNo=1&pageSize=10";
    // 5. NSData 
    NSData *pramData = [parmStr dataUsingEncoding:NSUTF8StringEncoding];
    // 6. 
    [request setHTTPBody:pramData];
    // 7. 
    [request setHTTPMethod:@"POST"];
     
    //  
    NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];

GET

 NSString *urlStr = [NSString stringWithFormat:@"http://image.zcool.com.cn/56/13/1308200901454.jpg"];    NSString *newStr = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSURL *url = [NSURL URLWithString:newStr];
    NSURLRequest *requst = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:10];
    // ( 1, )
    [NSURLConnection sendAsynchronousRequest:requst queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
        self.imageView.image = [UIImage imageWithData:data];
        //  
        NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
        NSLog(@"%@", dic);
    }];
POST
// POST 
    NSString *urlString = [NSString stringWithFormat:@"%@",kVideoURL];
    // url 
    NSURL *url = [NSURL URLWithString:urlString];
    // 
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:10];
    // 
    NSString *parmStr = [NSString stringWithFormat:@"method=album.channel.get&appKey=myKey&format=json&channel=t&pageNo=1&pageSize=10"];
    // NSData 
    NSData *data = [parmStr dataUsingEncoding:NSUTF8StringEncoding];
    [request setHTTPBody:data];
    [request setHTTPMethod:@"POST"];
    // ( )
    [NSURLConnection connectionWithRequest:request delegate:self];
, , 。 NSURLConnectionDataDelegate, :
//  
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
}
//  ,  
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
}
//  ,  
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
}
//  
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
    NSLog(@"%s", __FUNCTION__);
}

GET POST :

1. GET , , ? 。POST , , , 。

2. GET , 。 POST 。

3. GET POST , GET ,POST 。

: , , , 。

: , , 。

// ; :

iOS   HTTP   URL   Encode,  http://unmi.cc?p1=%+&sd f&p2= , 、 &% 。

Java、.net   JS  encodeURL  , Objective-C  ,

- (NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)enc;

 URL( ) , :

 NSString *url=@"http://unmi.cc?p1=%+&sd &p2= ";
 NSString *encodedValue = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

 encodedValue  :

http://unmi.cc?p1=%+&sd &p2=

,  URL  ?%&  , , &  , ,  URL  ?%&  。

, ,  URL:

CF_EXPORT
CFStringRef CFURLCreateStringByAddingPercentEscapes(CFAllocatorRef allocator, CFStringRef originalString, CFStringRef charactersToLeaved, CFStringRef legalURLCharactersToBeEscaped, CFStringEncoding encoding);

, p1=%+&sd f&p2= , :

NSString *param = @"%+&sd f";
   NSString *encodedValue = (NSString*)CFURLCreateStringByAddingPercentEscapes(nil, 
                                  (CFStringRef)param, nil, 
                               (CFStringRef)@"!*'();:@&=+$,/?%#[]", kCFStringEncodingUTF8);

 encodedValue   %+&sd f, ?%&  。 “ ”  : , 。

 CFURLCreateStringByAddingPercentEscapes  。

 ASIHTTPRequest   URL  , ASIFormDataRequest  :

- (NSString*)encodeURL:(NSString *)string
{
   NSString *newString = NSMakeCollectable([(NSString *)CFURLCreateStringByAddingPercentEscapes(
                                                              kCFAllocatorDefault,
                                  (CFStringRef)string, NULL, CFSTR(":/?#[]@!$ &'()*+,;="<>%{}|\\^~`"),
                     CFStringConvertNSStringEncodingToEncoding([self stringEncoding])) autorelease]);
   if (newString) {
      return newString;
   }
   return @"";
}

 Objective-C   encodeURL  , ,  ASIFormDataRequest  ,  ASIHTTPRequest  。 :

ASIFormDataRequest *formDataRequest = [ASIFormDataRequest requestWithURL:nil];
NSString *encodedValue1 = [formDataRequest encodeURL:@"%+&sd f"];
NSString *encodedValue2 = [formDataRequest encodeURL:@" "];

 encodedValue1  encodedValue2   %+&sd f    , ,  ASIFormDataRequest   URLEncode, 。



좋은 웹페이지 즐겨찾기