zoukankan      html  css  js  c++  java
  • 关于一些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:@"--%@ ",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="%@" %@ ",key,value]dataUsingEncoding:NSUTF8StringEncoding]];

                [body appendData:[[NSString stringWithFormat:@"--%@ ",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;

    }

     */

  • 相关阅读:
    java的学习笔记
    tomcat配置方法
    《编写高质量代码》学习笔记
    Servlet的学习笔记
    Http协议的学习笔记
    树莓派开箱使用分享以及一些心得
    树莓派的骚操作
    Linux的学习笔记
    msyql高级的学习笔记
    项目业务记录
  • 原文地址:https://www.cnblogs.com/dexjay/p/4812208.html
Copyright © 2011-2022 走看看