关于一些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格式的参数转换格式为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;
}
*/