`
zheyiw
  • 浏览: 1019904 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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);
}




分享到:
评论

相关推荐

    Objective-C - NSURLSession实现短信验证码注册登录完整示例:Objective-C - NSURLSession.m和附件说明

    在Objective-C中,你可以使用NSURLSession创建一个POST请求,将手机号作为参数发送到服务器API。 ```objc NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@...

    Objective-c-js-webView交互

    Objective-C与JavaScript在iOS开发中的交互是Web开发与原生应用结合的重要技术,尤其是在使用UIWebView展示网页内容时。本文将深入探讨如何实现Objective-C与JavaScript的双向通信,以实现丰富的功能集成和优化用户...

    Learn Objective-C on the mac

    Objective-C提供了NSURLSession和NSURLConnection等工具进行HTTP请求,学习者会了解如何发送GET和POST请求,处理JSON或XML数据。 8. **测试与发布**:了解如何使用Xcode内置的测试工具进行单元测试和UI测试,以及...

    iOS Javascript与Objective-C互操作

    在实际应用中,你可能需要传递更复杂的数据类型,如JSON对象,或者从Objective-C端调用JavaScript函数。这都可以通过WKWebView的用户内容控制器和`WKScriptMessage`对象来实现。 总结来说,iOS中的JavaScript与...

    swift-Objective-C&Swift库可以轻松将NSDictionary映射到模型对象与Alamofire完美配合

    `swift-Objective-C&Swift库可以轻松将NSDictionary映射到模型对象与Alamofire完美配合`这一标题揭示了一个高效的解决方案,它结合了Objective-C和Swift语言的优势,使得从JSON数据到自定义模型对象的转换变得简单...

    IOS-网络数据JSON-XML-Example

    在处理JSON数据时,iOS提供了内置的`NSJSONSerialization`类,用于将JSON字符串转换为Objective-C对象(如字典或数组)以及将Objective-C对象转换回JSON字符串。当你从服务器获取JSON响应后,可以使用`...

    ResourceKit-master(2)_Objective-C_

    3. **模型绑定**:ResourceKit具有强大的模型绑定功能,能够自动将JSON响应数据映射到Objective-C对象,极大地简化了数据解析过程。只需定义对应的Model类,ResourceKit会自动处理JSON到对象的转换。 4. **错误处理...

    The iOS Apprentice 4 - StoreSearch

    Objective-C是iOS开发的传统语言,它基于C语言并添加了面向对象的特性。理解它的语法和类的继承、协议、类别等概念是必要的。 Swift作为现代的Apple编程语言,以其简洁、安全的特性受到开发者喜爱。Swift的语法比...

    webservice-Objective-c

    - **Objective-C**:Objective-C是C语言的超集,增加了面向对象特性,是Apple的iOS和macOS平台的主要开发语言。 - **Web服务**:Web服务是一种通过HTTP协议提供数据的软件,可以是RESTful API、SOAP服务或其他形式...

    Objective-C API 封装器 iOS

    Objective-C是苹果平台的主要编程语言,它是C语言的超集,添加了面向对象的特性,如类、消息传递和协议。在Objective-C中,API封装通常涉及创建一个或多个类,这些类负责与远程服务器通信,处理HTTP请求和响应,以及...

    swift-JS-OC交互相互传递参数里面差不多都换成中文了

    总的来说,Swift、JavaScript和Objective-C之间的交互涉及到多种技术,包括`WKWebView`、`WKScriptMessageHandler`、`UIWebView`、JSON序列化和`@objc`协议。理解并熟练掌握这些技术对于构建混合式应用至关重要,...

    msgraph-training-ios-objectivec-master.zip

    "msgraph-training-ios-objectivec-master.zip"压缩包提供了使用Objective-C进行Microsoft Graph API集成的示例项目,这对于熟悉iOS开发以及希望深入理解如何在iOS应用中处理邮件功能的开发者来说非常有用。...

    lOS中AFNetworking网络请求的get和post步骤.zip

    如果需要POST请求中包含文件,可以使用`multipartFormRequestWithMethod:URLString:parameters:constructingBodyWithBlock:success:failure:`(Objective-C)或`uploadTask(with:method:URLString:parameters:...

    测试-03-AFN-OC.zip

    它为Objective-C开发者提供了一套简单易用的接口,用于处理网络请求,如GET、POST等,并支持上传和下载任务,JSON解析以及自定义请求头等功能。AFNetworking的灵活性和强大的功能使其成为许多iOS应用的基础部分。 ...

    Object-C-使用object-c开发的iOS平台网络框架-network.zip

    Objective-C是C语言的超集,增加了面向对象的特性,如类、继承、多态等。在iOS中,Foundation框架提供了一系列的网络相关的类,如NSData、NSURL、NSURLConnection等,它们是进行网络操作的基本工具。例如,NSData...

    iPhone-Network-Programming.zip_MacOS编程_Objective-C_

    6. **JSON解析**:网络数据通常以JSON格式传输,学会将接收到的数据解析为Objective-C对象。 7. **错误处理**:如何捕获和处理网络请求过程中的异常和错误。 8. **安全性**:HTTPS连接的设置,SSL/TLS证书验证,以及...

    Python-轻松区分ObjectiveC和Swift之间的iPhone模型

    在iOS应用开发中,Objective-C和Swift是两种主要的编程语言。它们各自有着独特的特性和优点,但在实际项目中,开发者可能需要根据设备型号来实现特定的功能或优化。本篇文章将探讨如何使用Python来轻松地区分...

    ios经典的学习资料

    学会发送GET、POST请求,处理JSON或XML数据,以及实现网络状态的监控,对开发网络依赖的应用至关重要。 最后,对于用户体验的重视,使iOS开发者需要了解Auto Layout和Size Classes,用于实现不同设备和屏幕尺寸下的...

    IOS JSON Login sample

    Objective-C是苹果公司开发的面向对象的编程语言,它是C语言的超集,支持Smalltalk风格的消息传递机制。在iOS应用开发中,Objective-C是早期的主要编程语言,尽管现在Swift更为流行,但Objective-C仍然有很多在用的...

    学生成绩管理系统iOS客户端代码

    3. **数据模型和解析**:JSON是RESTful服务常用的数据交换格式,Objective-C的NSJSONSerialization类能将接收到的JSON数据转化为Objective-C对象,便于进一步处理。同时,需要定义相应的Model类来存储学生和成绩信息...

Global site tag (gtag.js) - Google Analytics