objective-c post json
先看同步,默认服务器接受json数据,返回json数据
//同步post -(NSString *)postSyn:(NSString *)urlStr jsonData:(NSString *)jsonData{ NSLog(@"post_begin"); NSData* postData = [jsonData dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];//数据转码; NSString *length = [NSString stringWithFormat:@"%d", [postData length]]; NSMutableURLRequest* request = [[NSMutableURLRequest alloc]init]; [request setURL:[NSURL URLWithString:urlStr]]; //设置地址 [request setHTTPMethod:@"POST"]; //设置发送方式 [request setTimeoutInterval: 20]; //设置连接超时 [request setValue:length forHTTPHeaderField:@"Content-Length"]; //设置数据长度 [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; //设置发送数据的格式 [request setValue:@"application/json" forHTTPHeaderField:@"Accept"]; //设置预期接收数据的格式 [request setHTTPBody:postData]; //设置编码后的数据 //发起连接,接受响应 NSHTTPURLResponse* urlResponse = nil; NSError *error = [[NSError alloc] init] ; NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&error]; NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; //返回数据,转码 NSLog(responseString); NSLog(@"post_end"); return responseString; }
将下面的代码加入到某个类中,然后调用httpPost方法就可以了,这个是异步的
-(void)httpPost:(NSString*)strcontext URL:(NSString*)urlstr{ strcontext = nil; NSLog(@"url--%@",urlstr); NSLog(@"param--%@",strcontext); assert(strcontext!=NULL); assert(urlstr!=NULL); NSData* postData = [strcontext dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];//转码 NSString* postLength = [NSString stringWithFormat:@"%d",[postData length]]; NSMutableURLRequest* request = [[[NSMutableURLRequest alloc]init]autorelease]; [request setURL:[NSURL URLWithString:urlstr]]; //设置地址 [request setHTTPMethod:@"POST"]; //设置发送方式 [request setTimeoutInterval: 20]; //设置连接超时 [request setValue:postLength forHTTPHeaderField:@"Content-Length"]; //设置数据长度 [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; //设置发送数据的格式 [request setValue:@"application/json" forHTTPHeaderField:@"Accept"]; //设置预期接收数据的格式 [request setHTTPBody:postData]; //设置编码后的数据 NSURLConnection*conn=[[NSURLConnection alloc]initWithRequest:request delegate:self]; //设置类代理,注意要是self哦 if(conn) { NSLog(@"ConnectionSuccess"); [UIApplication sharedApplication].networkActivityIndicatorVisible=YES; [conn retain]; } else { NSLog(@"ConnectionFailed"); //informtheuserthatthedownloadcouldnotbemade } } #pragma mark------------------以下为相应的回调函数------------------------------- //收到响应时,会触发 -(void)connection:(NSURLConnection*)connection didReceiveResponse:(NSURLResponse*)response{ //注意这里将NSURLResponse对象转换成NSHTTPURLResponse对象才能去 NSHTTPURLResponse*httpResponse=(NSHTTPURLResponse*)response; if([response respondsToSelector:@selector(allHeaderFields)]){ NSDictionary*dictionary=[httpResponse allHeaderFields]; NSLog(@"didReceiveResponse1:%@",[dictionary description]); NSLog(@"didReceiveResponse2:%d",[response statusCode]); } } //链接错误 -(void)connection:(NSURLConnection*)connection didFailWithError:(NSError*)error{ //[selfperformSelectorOnMainThread:@selector(httpConnectEnd)withObject:nil waitUntilDone:NO]; NSLog(@"didFailWithError:%@",[error localizedDescription]); } //Calledwhenachunkofdatahasbeendownloaded. //接收数据每收到一次数据,会调用一次 -(void)connection:(NSURLConnection*)connection didReceiveData:(NSData*)data{ //Processthedownloadedchunkofdata. NSLog(@"didReceiveData_length:%d",[data length]); // NSLog(@"didReceiveData_data:%d",[data description]); [[self responseData] appendData:data]; NSLog(@"didReceiveData_data%@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]); //[selfperformSelectorOnMainThread:@selector(updateProgress)withObject:nil waitUntilDone:NO]; } //接收结束 -(void)connectionDidFinishLoading:(NSURLConnection*)connection{ NSLog(@"connectionDidFinishLoading:%@",connection); //NSLog(@"%lld",received_); //[selfperformSelectorOnMainThread:@selector(httpConnectEnd)withObject:nil waitUntilDone:NO]; //Settheconditionwhichendstherunloop. NSString *responseString = [[NSString alloc] initWithData:[self responseData] encoding:NSUTF8StringEncoding]; [responseData release]; NSLog(@"responseString:%@",responseString); }
相关推荐
Guanjs0 2020-11-09
wmsjlihuan 2020-09-15
shishengsoft 2020-09-15
poplpsure 2020-08-17
CyborgLin 2020-08-15
Richardxx 2020-07-26
sunnyhappy0 2020-07-26
knightwatch 2020-07-19
wcqwcq 2020-07-04
chichichi0 2020-06-16
YAruli 2020-06-13
JF0 2020-06-13
84423067 2020-06-12
心丨悦 2020-06-11
zkwgpp 2020-06-04
stoneechogx 2020-06-04
litterfrog 2020-05-30
today0 2020-05-26