大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
在ios开发中,可以使用GDataXML生成xml
成都创新互联公司主要从事网站制作、网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务杨浦,十年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575
GDataXML只有两个文件GDataXMLNode.h和GDataXMLNode.m。使用方法如下:
将文件包含进工程后,添加libxml2.dylib:
之后添加路径${SDK_ROOT}/usr/include/libxml2:
现在可以编写代码了:
#import "GDataXMLNode.h"
// 创建一个根标签
GDataXMLElement *rootElement = [GDataXMLNode elementWithName:@"root"];
// 创建一个属性
GDataXMLElement *attribute = [GDataXMLNode attributeWithName:@"a" stringValue:@"b"];
// 创建一个标签元素
GDataXMLElement *element = [GDataXMLNode elementWithName:@"user" stringValue:@"HelloWorld"];
// 把标签与属性添加到根标签中
[rootElement addAttribute:attribute];
[rootElement addChild:element];
// 生成xml文件内容
GDataXMLDocument *xmlDoc = [[GDataXMLDocument alloc] initWithRootElement:rootElement];
NSData *data1 = [xmlDoc XMLData];
NSString *xmlString = [[NSString alloc] initWithData:data1 encoding:NSWindowsCP1253StringEncoding];
NSLog(@"xmlString %@", xmlString);
结果:
?xml version="1.0"?
root a="b"userHelloWorld/user/root
在 OS X El Capitan 中有一个跟安全bai相关的模式叫 SIP(System Integrity Protection ),它禁止让软件以 root 身份du来zhi在 Mac 上运行,在升级到 OS X 10.11 中或许你就会看到部分应dao用程序被禁用了,这些或许是你通过终端或者第三方软件源安装。对于大多数用户来说,这种安全设置很方便,但是也有些开发者或者高级 Mac 用户不需要这样的设置。
今天这个 Mac 技巧就教你如何关闭 Mac SIP 安全设置,不过需要提醒,初级 Mac 用户不要关闭安全设置。
重启 Mac,按住 Command+R 键直到 Apple logo 出现,进入 Recovery Mode
点击 Utilities Terminal
在 Terminal 中输入 csrutil disable,之后回车
重启 Mac
这样 SIP 安全设置就已经被关闭了,如果想重新开启该安全设置,重复上面步骤,在第三步中将命令更换为 csrutil enable。
一、SIP消息
SIP消息是SIP客户终端和服务器之间通信的的基本信息单元。SIP消息基于文本,采用UTF-8编码(RFC 2279)中的ISO 10646字符集。SIP协议借鉴了HTTP协议(RFC 2068)的设计思想,有很多消息格式与之相同。SIP协议支持UDP传输协议
SIP消息消息分两类:请求消息 和 响应消息
请求消息(Request):客户端为了激活特定操作而发给服务器的SIP消息,包括INVITE,ACK,OPTIONS,BYE,CANCEL和REGISTER消息。UAC到UAS。
响应消息(Response):服务器向客户端反馈对应请求的处理结果的SIP消息,包括1xx,2xx,3xx,4xx,5xx,6xx响应消息,UAS到UAC
二、SIP消息格式与结构:
SIP消息由三个部分组成:标识消息类型和目的地址的起始行,携带消息参数的头部以及承载任意附加信息的消息体。消息体中传送的最重要的信息就是由SDP(Session Description Protocol)协议描述的媒体控制信息,供终端协商并建立媒体信道。
SIP消息格式:由一个起始行(Start-line)、一个或多个字段(header fields)组成的消息头、一个标志消息头结束的空行(CRLF)以及作为可选项的消息体(Message body)组成,其中描述的头称为实体头(Entityheader)。
generic-message = start-line
*message-header
CRLF
[ message-body ]
1.起始行
起始行分请求行(Request-Line)和状态行(Status-Line)两种。
1.1.请求行(Request-Line)
请求消息的起始行,由请求消息类型,请求目的发送地址Request-URI,SIP协议的版本号,之间用空格隔开。
请求行的6种Request Method:
INVITE:用于发起呼叫请求。INVITE消息包括消息头和数据区两部分。INVITE 消息头包含主、被呼叫的地址,呼叫主题和呼叫优先级等信息。数据区则是关于会话媒体的信息,可由会话描述协议SDP 来实现。
BYE:当一个用户决定中止会话时,可以使用BYE 来结束会话。
OPTIONS:用于询问被叫端的能力信息,但OPTIONS 本身并不能发起呼叫。
ACK:对已收到的消息进行确认应答。
REGISTER:用于用户向SIP服务器传送位置信息或地址信息。
CANCEL:取消当前的请求,但它并不能中止已经建立的连接。
1.2.状态行(Status-Line)
响应消息的起始行,SIP应答消息的Status-Line由SIP-Version开始,接着是一个数字编码的状态码Status-Code,最后是一个与状态码相关的描述性短语Reason-Phrase,然后由一个CRLF行结束符结束Status-Line。
SIP应答消息的六类应答状态编码
1xx:临时消息:表示表示请求消息已经收到,后面将继续处理该请求。
2xx:成功消息:表示请求已经被成功的理解、接受或执行。
3xx:重定向消息:表示为了完成请求还需采取更进一步的动作。
4xx:客户机错误:表示该请求含有语法错误或在这个服务器上不能被满足。
5xx:服务器错误:表示该服务器不能处理一个明显有效的请求。
6xx:全局性故障:表示该请求在任何服务器上都不能被实现。
2.消息头:
消息头的作用是进一步提供有关消息的其他信息,使代理服务器或客户代理服务器更好地对消息进行处理。消息头分四类:通用头(general-header )、请求头(request-header )、响应头( response-header )和实体头( entityheader)
四大类
general-header
描述消息基本属性的通用头域,可用于请求消息和应答消息;
消息头有:Call-ID,From,To,Via,Contact,CSeq,Encryption,Expires,Record-Route,Timestamp,Date,Accept,Accept-Encoding,Accept-Language
request-header
请求头域,只可用于请求消息,它被用来传递有关应答的附加信息,对请求进行补充说明;
Subject,User-Agent,Organization,Contact,Authorization,Proxy-Authorization,Proxy-Require,Response-Key,Require,Priority,Hide,Route,Max-Forwards。
response-header
应答头域,只可用于应答消息,它被用来传递有关应答的附加信息,对应答进行补充说明。
Proxy-Authenticate,WWW-Authenticate,Retry-After,Server,Warning,Allow,Unsupported。
entity-header
消息体头域,用于描述消息体内容的长度、格式和编码类型等属性,可用于请求消息或应答消息。
Content-Encoding,Content-Length,Content-Type
消息头格式
每个消息头都是一个“句子”,以CRLF行结束符表示一个头域的结束。它们都由字段名(field-name)和域值(field-value)两部分组成,中间以“:”相隔。
常见消息头说明:
TO:格式:TO:显示名接收者URI;tag=n;显示名和tag可选。接收者URI是SIP网络种唯一标识接收终端的标识符。例:TO:DENNYSIP:caller@WORK.COM;TAG=11111 或 TO:sip:caller@work.com
FROM: 消息头FROM给出标识会话发起者的URI。比如:FROM:sip:caller@work.com;tag=hyh8。tag是必需的。
CALL-ID: 用于全局唯一标识正在建立的会话的标识符。 随机数加UAC标识信息。
CSeq: 用于标识同一会话中不同事务的序号,通常由一个用作序号的整型数和消息类型组成。整个会话操作过程由不同的事务组成,每一事务所涉及的消息的CSeq序号必须相同。
Via:为响应消息提供传输路径,当请求消息经过每一跳节点时,每一跳节点都把自身的IP地址信息放入顶层Via中。响应消息则沿着请求消息记录下的传输路径反向传输,首先移走指明自身IP地址信息的顶层消息头
三、报文格式 SIP 请求消息的过程
1、 请求应答的一个过程
1004@192.168.0.107----1001@192.168.0.112
1 INVITE ----SIP SERVER(192.168.0.129)
2 407 Proxy Authentication Required--1004
3 1004 ack---SIP SERVER
4 1004 INVITE--SIP SERVER
5 SIP-SERVER 100 Giving ---1004
6 SIP SERVER INVITE--1001
7 1001 100 Trying---SIP SERVER
8 1001 180 Ringing----SIP SERVER
9 SIP SERVER 180 Ringing ----1004
10 1001 200 OK---SIP SERVER
11 SIP SERVER 200OK----1004
12 1004 ACK---SIP SERVER
13 SIP SERVER ACK ---- 1001
SIP是一个应用层的信令控制协议。用于创建、修改和释放一个或多个参与者的会话。这些会话可以好似Internet多媒体会议、IP电话或多媒体分发。会话的参与者可以通过组播(multicast)、网状单播(unicast)或两者的混合体进行通信。
SIP是类似于HTTP的基于文本的协议。SIP可以减少应用特别是高级应用的开发时间。由于基于IP协议的SIP利用了IP网络,固定网运营商也会逐渐认识到SIP技术对于他们的深远意义。
使用 SIP,服务提供商可以随意选择标准组件。不论媒体内容和参与方数量,用户都可以查找和联系对方。SIP 对会话进行协商,以便所有参与方都能够就会话功能达成一致以及进行修改。它甚至可以添加、删除或转移用户。
SIP它既不是会话描述协议,也不提供会议控制功能。为了描述消息内容的负载情况和特点,SIP 使用 Internet 的会话描述协议 (SDP) 来描述终端设备的特点。SIP 自身也不提供服务质量 (QoS),它与负责语音质量的资源保留设置协议 (RSVP) 互操作。它还与若干个其他协议进行协作,包括负责定位的轻型目录访问协议 (LDAP)、负责身份验证的远程身份验证拨入用户服务 (RADIUS) 以及负责实时传输的 RTP 等多个协议。
SIP 的一个重要特点是它不定义要建立的会话的类型,而只定义应该如何管理会话。有了这种灵活性,也就意味着SIP可以用于众多应用和服务中,包括交互式游戏、音乐和视频点播以及语音、视频和 Web 会议。SIP消息是基于文本的,因而易于读取和调试。新服务的编程更加简单,对于设计人员而言更加直观。SIP如同电子邮件客户机一样重用 MIME 类型描述,因此与会话相关的应用程序可以自动启动。SIP 重用几个现有的比较成熟的 Internet 服务和协议,如 DNS、RTP、RSVP 等。不必再引入新服务对 SIP 基础设施提供支持,因为该基础设施很多部分已经到位或现成可用。
对 SIP 的扩充易于定义,可由服务提供商在新的应用中添加,不会损坏网络。网络中基于 SIP 的旧设备不会妨碍基于 SIP 的新服务。例如,如果旧 SIP 实施不支持新的 SIP 应用所用的方法/标头,则会将其忽略。
SIP 独立于传输层。因此,底层传输可以是采用 ATM 的 IP。SIP 使用用户数据报协议 (UDP) 以及传输控制协议 (TCP),将独立于底层基础设施的用户灵活地连接起来。SIP 支持多设备功能调整和协商。如果服务或会话启动了视频和语音