您的位置:首页 > 其它

关于一些post请求的汇总

2015-09-16 09:23 302 查看
/*

/*

// 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格式的参数转换格式为NSData,POST提交必须用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格式的参数转换格式为NSData,POST提交必须用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枚举器用来存放dictionary的key

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建立请求NSMutableURLRequest(post需要用这个)

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) //没有接受到数据,但是error为nil。。表示接受到空数据。

{

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枚举器用来存放dictionary的key

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;

}

*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: