XMLDictionary 解析的使用    
(day16-1)-Xcode
解析和生成XML提供了一个简单的方法,可方便地将XML文件转换为NSDictionary。可将任何字典的内容以XML形式输出。
导入 包//  XMLDictionary.h//  XMLDictionary.m
在viewController中导入 #import "XMLDictionary.h"
当网址为http而非https
记住在info中最后一项添加 App transport security setting 添加 allow —YES;
代码1
#import "ViewController.h"
#import "XMLDictionary.h"
@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

获取文件
NSString *path=[[NSBundle mainBundle]pathForResource:@"Myxml" ofType:@"xml"];
将文件转化为data类型
NSData *data=[NSData dataWithContentsOfFile:path];
//输出文件以字典 方法:[NSDictionary dictionaryWithXMLFile:path].
NSLog(@"%@",[NSDictionary dictionaryWithXMLFile:path]);
}
Get和POST请求
从表面的意思看 get和post的区别:get是请求数据 post是发送数据 这是错误的 其实两者都可以的 。在iOS服务器发送请求里面可以带参数

那么这些误区是怎么出现的呢?先看看一下对http的解释

一般在浏览器中输入网址访问资源都是通过GET方式;在FORM提交中,可以通过Method指定提交方式为GET或者POST,默认为GET提交 
Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE 
URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查 ,改 ,增 ,删 4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询 资源信息,而POST一般用于更新 资源信息(个人认为这是GET和POST的本质区别,也是协议设计者的本意,其它区别都是具体表现形式的差异 )。

再进一步了解下他们两个的区别:

1. GET使用URL或Cookie传参。而POST将数据放在BODY中。

2. GET的URL会有长度上的限制,则POST的数据则可以非常大。

3. POST比GET安全,因为数据在地址栏上不可见。

//   get请求 路径
    NSString *path=@"http://1.studyios.sinaapp.com/gyxy.php?a=qq";
//    创建请求对象
    NSURLRequest *request=[NSURLRequest requestWithURL:[NSURL URLWithString:path]];
//    1.创建一个会话对象
    NSURLSession *session=[NSURLSession sharedSession];

//    2.通过请求信息,获取数据结构(根据会话创建一个task 发送请求)。
    //    completionHandler 回调 data响应体信息 response:响应头信息,主要是对服务器端的描述error:错误信息,如果请求失败,则error有值
    NSURLSessionDataTask *task=[session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        NSArray *arr=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&error];
        NSLog(@"%@",arr);
    }];
//    执行任务
    [task resume];

}
代码2
#import <UIKit/UIKit.h>

@interface ViewController : UIViewController<UITextFieldDelegate>

@property(strong,nonatomic) UITextField *txtInfo;

@end
#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
 
    self.txtInfo=[[UITextField alloc] initWithFrame:CGRectMake(100, 100, 150, 44)];
    self.txtInfo.borderStyle=1;
    self.txtInfo.delegate=self;

[self.view addSubview:self.txtInfo];
}

-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
    NSString *path=[NSString stringWithFormat:@"http://1.studyios.sinaapp.com/gyxy.php?a=%@&b=bbb&c=ccc",self.txtInfo.text]
    ;
   
    NSURLRequest *request=[NSURLRequest requestWithURL:[NSURL URLWithString:path]];
    //   1.创建一个会话对象
    NSURLSession *session=[NSURLSession sharedSession];
    //    2.通过请求信息 获取数据结构
    NSURLSessionDataTask *task=[session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        //        NSLog(@"%@",data);
       
        NSArray *arr= [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&error];
       
        NSLog(@"%@",arr);
    }];
   
    [task resume];
    return YES;

}

使用NSURLSession发送POST请求的方法和NSURLConnection类似,整个过程如下:

1)确定请求路径(一般由公司的后台开发人员以接口文档的方式提供)

2)创建 可变的 请求对象(因为需要修改),此步骤不可以省略

3)修改请求方法为POST

4)设置请求体,把参数转换为二进制数据并设置请求体

5)创建会话对象(NSURLSession)

6)根据会话对象创建请求任务(NSURLSessionDataTask)

7)执行Task
8)当得到服务器返回的响应后,解析数据(XML|JSON|HTTP)
//  ViewController.m
//  day16-2
//
//  Created by tlh on 16/3/28.
//  Copyright © 2016年 lamco. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
   
    NSString *path=@"http://1.studyios.sinaapp.com/mypost.php";
   
    NSURL *url=[NSURL URLWithString:path];
   
    NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:url];
//    post请求
    request.HTTPMethod=@"POST";
//    参数
    NSString *param=[NSString stringWithFormat:@"can1=test&can2=test1"];
//    将参数转换成data类型数据
    NSData *dataparam=[param dataUsingEncoding:NSUTF8StringEncoding];
//    request的参数的主体
    request.HTTPBody=dataparam;
   
    NSURLSession *session=[NSURLSession sharedSession];
    NSURLSessionDataTask *task=[session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        NSLog(@"%@",[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&error]);
       
    }];
    [task resume];

}

转载于:https://www.cnblogs.com/tianlianghong/p/5330955.html

XMLDictionary 解析的使用相关推荐

  1. XMLDictionary iOS的XML处理包

    1.概述: XMLDictionary 提供一种简单的方法实现 iOS 和 Mac OS X 下解析和生成 XML 的方法.XMLDictionary 将 XML 转成 NSDictionary ,也 ...

  2. java xml开源操作类,xml解析和操作的开源工具项目涵盖java c++ php 等语言

    XML解析器-Xerces    XML操作库-dom4j    XML文档解析器-Digester    J2ME-的XML-解析器-kXML XML解析类库-MXP1    XML解析器-LibX ...

  3. golang通过RSA算法生成token,go从配置文件中注入密钥文件,go从文件中读取密钥文件,go RSA算法下token生成与解析;go java token共用

    RSA算法 token生成与解析 本文演示两种方式,一种是把密钥文件放在配置文件中,一种是把密钥文件本身放入项目或者容器中. 下面两种的区别在于私钥公钥的初始化, init方法,需要哪种取哪种. 通过 ...

  4. List元素互换,List元素转换下标,Java Collections.swap()方法实例解析

    Java Collections.swap()方法解析 jdk源码: public static void swap(List<?> list, int i, int j) {// ins ...

  5. 条形码?二维码?生成、解析都在这里!

    二维码生成与解析 一.生成二维码 二.解析二维码 三.生成一维码 四.全部的代码 五.pom依赖 直接上代码: 一.生成二维码 public class demo {private static fi ...

  6. Go 学习笔记(82)— Go 第三方库之 viper(解析配置文件、热更新配置文件)

    1. viper 特点 viper 是一个完整的 Go应用程序的配置解决方案,它被设计为在应用程序中工作,并能处理所有类型的配置需求和格式.支持特性功能如下: 设置默认值 读取 JSON.TOML.Y ...

  7. Go 学习笔记(77)— Go 第三方库之 cronexpr(解析 crontab 表达式,定时任务)

    cronexpr 支持的比 Linux 自身的 crontab 更详细,可以精确到秒级别. ​ 1. 实现方式 cronexpr 表达式从前到后的顺序如下所示: 字段类型 是否为必须字段 允许的值 允 ...

  8. mybatis配置文件解析

    mybatis配置文件解析 mybatis核心配置文件`mybatis-config.xml文件. mybatis的配置文件包含了会深深影响mybatis行为的设置和属性信息. 能配置的内容: con ...

  9. 谷歌BERT预训练源码解析(二):模型构建

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/weixin_39470744/arti ...

最新文章

  1. C#进阶系列——WebApi 接口参数不再困惑:传参详解
  2. elasticsearch index 之 put mapping
  3. 仿QQ联系人的TableView的折叠与拉伸
  4. c语言行列倒置算法,循环行列的元素倒置。求指点
  5. 服务器采购框架合同协议书范本,手写一个满足WSGI协议的Server
  6. SpringBoot ——Spring Boot日志配置
  7. 从一个简单的Java单例示例谈谈并发
  8. 如何使用TCP/IP开发网络程序
  9. 荣耀20 Pro正面渲染图曝光:开孔全面屏设计+后置四摄
  10. Hadoop4——HA集群的搭建(高可用)
  11. cant connect local mysql to_连接Mysql提示Can't connect to local MySQL server through socket的解决方法...
  12. HBase 1.3(NOSQL) 发布,性能大幅提升
  13. linux文件实时同步(rsync+inotiy)
  14. Learning Enriched Features for Real Image Restoration and Enhancement Paddle模型复现93号(1)
  15. 如何对一个网页进行测试
  16. 2017最新苹果 APPLE ID注册流程
  17. Python滚动条如果滚不动
  18. 了不起的盖茨比读后感---Java程序员学Python学习笔记(二)
  19. 2012年5月后QQ空间农场Farmkey最新计算字符串
  20. win7 jdk install and config

热门文章

  1. MangataのACM模板
  2. AcWing 841. 字符串哈希(字符串Hash)
  3. 图论最短路及生成树(Prim,Djikstra,Spfa,Bellan-ford,kruskal,topsort)
  4. App测试中ios和Android的区别2
  5. 如何获得查询的执行计划?(一)
  6. python hello world
  7. 【1】windows下IOS开发基础环境搭建
  8. 杭电--N!(大数)
  9. 【ZooKeeper Notes 5】单机启动多个zk实例注意点
  10. CMS软件系统架构设计思考