关于一些post请求的汇总

/*

 

 /*

 

    

//    http://apitest.dnbiz.cn/v1/service/cloud access_token=U08PrZzS3O3LJQOWZcPx&page=1

    

    NSLog(@"网络请求正在进行");

    //post提交的参数,格式如下:

    //参数1名字=参数1数据&参数2名字=参数2数据&参数3名字=参数3数据&...

    NSString *post = [NSString stringWithFormat:@"keyword = 马力 &search type = 1"];

    

    NSLog(@"post:%@",post);

    

    NSURL *url = [NSURL URLWithString:@"http://apitest.dnbiz.cn/v1/brand/search"];

    

    //NSSrring格式的参数转换格式为NSDataPOST提交必须用NSData数据。

    NSData *postData = [post dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];

    //计算POST提交数据的长度

    NSString *postLength = [NSString stringWithFormat:@"%ld",[postData length]];

    NSLog(@"postLength=%@",postLength);

    //定义NSMutableURLRequest

    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];

    //设置提交目的url

    [request setURL:url];

    //设置提交方式为 POST

    [request setHTTPMethod:@"POST"];

    //设置http-header:Content-Type

    //这里设置为 application/x-www-form-urlencoded ,如果设置为其它的,比如text/html;charset=utf-8,或者 text/html 等,都会出错。不知道什么原因。

//    [request setValue:@"text/html" forHTTPHeaderField:@"Content-Type"];

    //设置http-header:Content-Length

//    [request setValue:postLength forHTTPHeaderField:@"Content-Length"];

    //设置需要post提交的内容

    [request setHTTPBody:postData];

    

    //同步提交:POST提交并等待返回值(同步),返回值是NSData类型。

    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

        

        NSLog(@"接收到的信息%@", data);

        NSLog(@"有错误了%@", connectionError);

        NSLog(@"有相应了%@", response);

        

        //NSData类型的返回值转换成NSString类型

        NSString *result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

        NSLog(@"user login check result:%@",result);

        

        

    }];

    [self.tableView reloadData];

    

}

     */

/*

-(void)netWork

{

    //post提交的参数,格式如下:

    //参数1名字=参数1数据&参数2名字=参数2数据&参数3名字=参数3数据&...

    NSString *post = [NSString stringWithFormat:@"m=check_user_login_info&f=itemgarden_iphone_app&u=%@&s=%@",self.us_email,self.us_password];

    

    NSLog(@"post:%@",post);

    

    //NSSrring格式的参数转换格式为NSDataPOST提交必须用NSData数据。

    NSData *postData = [post dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];

    //计算POST提交数据的长度

    NSString *postLength = [NSString stringWithFormat:@"%d",[postData length]];

    NSLog(@"postLength=%@",postLength);

    //定义NSMutableURLRequest

    NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];

    //设置提交目的url

    [request setURL:[NSURL URLWithString:kUserLoginCheckUrl]];

    //设置提交方式为 POST

    [request setHTTPMethod:@"POST"];

    //设置http-header:Content-Type

    //这里设置为 application/x-www-form-urlencoded ,如果设置为其它的,比如text/html;charset=utf-8,或者 text/html 等,都会出错。不知道什么原因。

    [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];

    //设置http-header:Content-Length

    [request setValue:postLength forHTTPHeaderField:@"Content-Length"];

    //设置需要post提交的内容

    [request setHTTPBody:postData];

    

    //定义

    NSHTTPURLResponse* urlResponse = nil;

    NSError *error = [[NSError alloc] init];

    //同步提交:POST提交并等待返回值(同步),返回值是NSData类型。

    NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&error];

    //NSData类型的返回值转换成NSString类型

    NSString *result = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];

    NSLog(@"user login check result:%@",result);

    

    if ([@"success" compare:result]==NSOrderedSame) {

        return YES;

    }

    return NO;

}

 

 */

//    [self loginWithPostWithName:@"U08PrZzS3O3LJQOWZcPx" pwd:1];

  

    /*

    NSURL *url = [NSURL URLWithString:@"http://apitest.dnbiz.cn/v1/service/cloud"];

    NSMutableURLRequest *urlReauest = [[NSMutableURLRequest alloc] initWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:20.f];

    NSString *contentType = [NSString stringWithFormat:@"multipart/form-data:boundary=%@",logo];

    [urlReauest setValue:contentType forHTTPHeaderField:@"Content-Type"];

    [urlReauest setHTTPMethod:@"POST"];

    [urlReauest setHTTPBody:[self HTTPPOSTMultipartBodyWithParameters:parameters]];

 

}

 

*/

    /*

 

- (NSData *)HTTPPOSTMultipartBodyWithParameters:(NSDictionary *)parameters

{

    NSMutableData *body = [NSMutableData data];

    

    // Add Body Prefix String

    [body appendData:[[NSString stringWithFormat:@"--%@\r\n",SR_POST_BOUNDARY]dataUsingEncoding:NSUTF8StringEncoding]];

    

    // Add Main Body

    for (NSString *keyin [parametersallKeys]) {

        id value = [parameters objectForKey:key];

        

        if ([value isKindOfClass:[NSStringclass]]){

            [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n\r\n%@\r\n",key,value]dataUsingEncoding:NSUTF8StringEncoding]];

            [body appendData:[[NSString stringWithFormat:@"--%@\r\n",SR_POST_BOUNDARY]dataUsingEncoding:NSUTF8StringEncoding]];

        }else {

            NSLog(@"please use addMultiPartData:withName:type:filename: Methods to implement");

        }

    }

    return body;

}

 

     */

 

/*

-(void)netWork1

{

    //把传进来的URL字符串转变为URL地址

    NSURL *url = [NSURL URLWithString:@"http://apitest.dnbiz.cn/v1/service/cloud"];

    //请求初始化,可以在这针对缓存,超时做出一些设置

    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url

                                                           cachePolicy:NSURLRequestReloadIgnoringCacheData

                                                       timeoutInterval:20];

    //解析请求参数,用NSDictionary来存参数,通过自定义的函数parseParams把它解析成一个post格式的字符串

    NSString *parseParamsResult = [self parseParams:params];

    NSData *postData = [parseParamsResult dataUsingEncoding:NSUTF8StringEncoding];

    

    [request setHTTPMethod:@"POST"];

    [request setHTTPBody:postData];

 

 

    

}

 

//NSDictionary解析成post格式的NSString字符串

+ (NSString *)parseParams:(NSDictionary *)params{

    NSString *keyValueFormat;

    NSMutableString *result = [NSMutableString new];

    //实例化一个key枚举器用来存放dictionarykey

    NSEnumerator *keyEnum = [params keyEnumerator];

    id key;

    while (key = [keyEnum nextObject]) {

        keyValueFormat = [NSString stringWithFormat:@"%@=%@&",key,[params valueForKey:key]];

        [result appendString:keyValueFormat];

        NSLog(@"post()方法参数解析结果:%@",result);

    }

    return result;

}

 

 */

 

-(void)loginWithPostWithName:(NSString *)userName pwd:(NSInteger)pwd

{

    //1确定地址NSURL

    NSString *urlString = [NSString stringWithFormat:@"http://api.dnbiz.cn/v1/service/cloud"];

    NSURL *url = [NSURL URLWithString:urlString];

    

    //2建立请求NSMutableURLRequestpost需要用这个)

    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

    //网络访问超时时间

    [request setTimeoutInterval:5.0f];

    //1)post请求方式,网络请求默认是get方法,所以如果我们用post请求,必须声明请求方式。

    [request setHTTPMethod:@"POST"];

    //2)post请求的数据体,post请求中数据体时,如果有中文,不需要转换。因为ataUsingEncoding方法已经实现了转码。

    NSString *bodyStr = [NSString stringWithFormat:@"access_token=%@&page=%ld", userName, pwd];

    //nstring转换成nsdata

    NSData *body = [bodyStr dataUsingEncoding:NSUTF8StringEncoding];

    NSLog(@"body data %@", body);

    [request setHTTPBody:body];

    

    //这里是非代理的异步请求,异步请求并不会阻止主线程的继续执行,不用等待网络请结束。

    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError * error) {

        //这段块代码只有在网络请求结束以后的后续处理。

        if (data != nil) {  //接受到数据,表示工作正常

            NSString *str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];

            NSLog(@"%@", str);

        }else if(data == nil && error != nil)    //没有接受到数据,但是errornil。。表示接受到空数据。

        {

            NSLog(@"接受到空数据");

        }else{

            NSLog(@"%@", error.localizedDescription);  //请求出错。

        }  

    }];  

}

*/

/*

//1.创建post方式的 参数字符串url

+(NSString *)createPostURL:(NSMutableDictionary *)params

{

    NSString *postString=@"";

    for(NSString *key in [params allKeys])

    {

        NSString *value=[params objectForKey:key];

        postString=[postString stringByAppendingFormat:@"%@=%@&",key,value];

    }

    if([postString length]>1)

    {

        postString=[postString substringToIndex:[postString length]-1];

    }

    return postString;

}

 

 

 

//2.zwh -自定义的通用方法------post数据回服务器,并返回结果数据集

+(NSData *)getResultDataByPost:(NSMutableDictionary *)params

{

    

    NSString *postURL=[Utility createPostURL:params];

    NSError *error;

    NSURLResponse *theResponse;

    NSMutableURLRequest *theRequest=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:BASEURL]];

    [theRequest setHTTPMethod:@"POST"];

    [theRequest setHTTPBody:[postURL dataUsingEncoding:NSUTF8StringEncoding]];

    [theRequest addValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];

    return [NSURLConnection sendSynchronousRequest:theRequest returningResponse:&theResponse error:&error];

}

//调用实例代码

    NSMutableDictionary *params=[[NSMutableDictionary alloc] init];

    [params setObject:@"taobao.taobaoke.items.get" forKey:@"method"];

    [params setObject:@"num_iid,title,pic_url,price,score" forKey:@"fields"];

    [params setObject:@"淘宝帐户" forKey:@"nick"];

    [params setObject:selectedItemCat.cid forKey:@"cid"];

    [params setObject:@"true" forKey:@"is_mobile"];

    NSData *resultData=[Utility getResultData:params];

 */

 

/*

//post异步请求封装函数

+ (void)post:(NSString *)URL RequestParams:(NSDictionary *)params FinishBlock:(void (^)(NSURLResponse *response, NSData *data, NSError *connectionError)) block{

    //把传进来的URL字符串转变为URL地址

    NSURL *url = [NSURL URLWithString:URL];

    //请求初始化,可以在这针对缓存,超时做出一些设置

    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url

                                                           cachePolicy:NSURLRequestReloadIgnoringCacheData

                                                       timeoutInterval:20];

    //解析请求参数,用NSDictionary来存参数,通过自定义的函数parseParams把它解析成一个post格式的字符串

    NSString *parseParamsResult = [self parseParams:params];

    NSData *postData = [parseParamsResult dataUsingEncoding:NSUTF8StringEncoding];

    

    [request setHTTPMethod:@"POST"];

    [request setHTTPBody:postData];

    

    //创建一个新的队列(开启新线程)

    NSOperationQueue *queue = [NSOperationQueue new];

    //发送异步请求,请求完以后返回的数据,通过completionHandler参数来调用

    [NSURLConnection sendAsynchronousRequest:request

                                       queue:queue

                           completionHandler:block];

    //    return result;

}

 

//NSDictionary解析成post格式的NSString字符串

+ (NSString *)parseParams:(NSDictionary *)params{

    NSString *keyValueFormat;

    NSMutableString *result = [NSMutableString new];

    //实例化一个key枚举器用来存放dictionarykey

    NSEnumerator *keyEnum = [params keyEnumerator];

    id key;

    while (key = [keyEnum nextObject]) {

        keyValueFormat = [NSString stringWithFormat:@"%@=%@&",key,[params valueForKey:key]];

        [result appendString:keyValueFormat];

        NSLog(@"post()方法参数解析结果:%@",result);

    }

    return result;

}

 */

posted @ 2015-09-16 09:23  空空亦空  阅读(364)  评论(0编辑  收藏  举报