API调用:GET、POST
来源:互联网 发布:java icmp协议 编辑:程序博客网 时间:2024/06/06 10:55
一、网络请求GET
使用新浪微博提供的开放API(如下图),获得相应信息(GET)。
同步:当一个线程在执行某个请求时,其它线程进入等待状态
异步:当一个线程在执行某个请求时,进程不需要一直等下去,而是继续执行下面的操作,不管其他进程的状态。当有消息返回时系统会通知进程进行处理,这样可以提高执行的效率。
1.同步GET
步骤:
- 请求URL与请求参数Access Token值用“?”进行拼接
NSString *URLString = @" ~ ? ~ ";
- 编码
URLString = [URLString stringAddingPrecentEncodingWithAllowedCharacters :[NSCharacterSet URLQueryAllowedCharacterSet]];
- 将得到的字符串转化成URL
NSURL *URL = [NSURL URLWithString:URLString];
- 创建URL请求
NSNRLRequest *request = [NSURLRequest requestWithURL:URL cahePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60];/*requestWithURL:请求URLcahePolicy:缓存策略timeoutInterval:请求超时*/
- 进行网络请求,得到json数据
NSData *data = [NSURLConnection sendSynchronousRequest:request returnResponse:nil error:nil];
- 解析json(得到NSDictionary格式的数据)
NSDictionary *dic = [NSJOSNSerialization JSONObjectWithData:data option:NSJSONNReadingAllowFragments error:nil];
- 接受字典、通过对字典的操作,取出key所对应的value值
//WeiBoModel是一个拥有多个属性的类,用于接收json数据WeiBoModel *model = [[WeiBoModel alloc]initWithDictionary:dic];NSString *text = [model.statuses[0] objectForKey:@"text"];
- 将Value显示在UI上
//textView为UI上的text控件self.textView.text = text;
2.异步GET请求
//代码实现的与同步GET请求的前五步一样,而异步请求可以通过代理去实现。[NSURLConnection connectionWithRequest:request delegate:self]
代理(NSURLConnectionDataDelegate)中需要实现的方法:
-(void)connection:(NSURLConnection *)connectiondidReceiveRespone:(NSURLResponse *)respond{ //初始化一个mDataGet 用于接收请求返回的数据 _mDataGet = [NSMutableData data];}-(void)connection:(NSURLConnection *)connectiondidReceiveData:(NSData *){ //将请求回来的数据追加到mDataGet后面 [_mDataGet appenedData:data];}-(void)connectionDidFinishLoading:(NSURLConnection *)connection{ NSDictionary *dic = [NSJSONSerialization JSONObjectWithData _mDataGet options:NSJSONReadingAllowFragments error:nil];NSString *text = [model.statuses[0] objectForKey:@"text"];dispatch_async(dispatch_get_main_queue(), ^{ self.textView.text = text; });}
运行结果:
0 0
- API调用:GET、POST
- PHP(CURL)POST/GET数据调用API简单示例
- API(get/post)
- API Request Get和Post
- get/post方法调用 webservice
- 跨域调用接口——WebClient通过get和post请求api
- C# 调用Get,Post,Soap调用WebService
- VB调用API post数据
- 远程调用 api接口 post
- WebClient 通过get和post请求api
- [API]common http get and post
- api中的GET和POST的区别
- C#中GET、POST请求API
- WebClient 通过get和post请求api
- 关于http get 和post调用ws
- iphone http GET POST 调用webservice
- jQuery异步调用post,get (重要)
- get和post方式调用websevice
- MySQL基础四之基本的增删改查
- The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
- Visual Studio Code 如何安装插件
- html5手机网站需要加的那些meta/link标签,html5 meta全解
- apache启动报错(98)Address already in use: make_sock: could not bind to address [::]:80 (98)Address alre
- API调用:GET、POST
- 浓缩的精华!从零开始带你认识最新的图片格式WEBP
- Linux的chattr与lsattr命令详解
- 简易计算器的实现
- linux cifs自动挂载windows硬盘或文件夹
- Commands
- cdn
- 网络请求XML解析XML
- 嵌入式WEB服务器(BOA)移植