iOS实现xml的post传递,返回xml数据进行解析

WCF与iOS跨平台SOAP通信实战:HTTP+XML协议穿透指南 SOAP是一种基于XML的标准化Web服务协议,依托HTTP传输实现跨系统互操作;其核心在于严格的消息信封结构、命名空间约束与SOAPAction头机制。该协议虽被REST/JSON逐步替代,但在遗留系统集成、金融合规接口及异构终端对接中仍具不可替代性。技术价值体现在零第三方依赖、防火墙友好、契约清晰可调试,适用于.NET后台与macOS/iOS/嵌入式设备间的轻量级数据通道构建。本文聚焦WCF basicHttpBinding与原生NSURLConnection协同下的端到端实现,还原无SDK时代如何通过 阅读详情


1、xml的post传递,传参数进行拼接

-(void) postxml:(NSString*)vendor version:(NSString*)version
{
    
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
    [request setURL:[NSURL URLWithString:URLstr]];
    [request setHTTPMethod:@"POST"];//声明请求为POST请求
    //set headers
    NSString *contentType = [NSString stringWithFormat:@"text/xml"];//Content-Type数据类型设置xml类型
    [request addValue:contentType forHTTPHeaderField: @"Content-Type"];
    //create the body
    NSMutableData *postBody = [NSMutableData data];
    [postBody appendData:[[NSString stringWithFormat:@"<此处写根节点><此处写报文头节点><reqUserId>123456</reqUserId><authId>LLLL</authId><authPw>123456</authPw></此处写报文头节点>"] dataUsingEncoding:NSUTF8StringEncoding]];
    
    //拼接参数字符串
    [postBody appendData:[[NSString stringWithFormat:@"<此处写报文体节点><deviceCode>"] dataUsingEncoding:NSUTF8StringEncoding]];
    //vendor拼接在<deviceCode></deviceCode>标签对中间
    [postBody appendData:[vendor dataUsingEncoding:NSUTF8StringEncoding]];
    [postBody appendData:[[NSString stringWithFormat:@"</deviceCode><appId>FaceQualityCheck</appId><operateSystem>iOS</operateSystem><operateSystemVersion>"] dataUsingEncoding:NSUTF8StringEncoding]];
    [postBody appendData:[version dataUsingEncoding:NSUTF8StringEncoding]];
    [postBody appendData:[[NSString stringWithFormat:@"</operateSystemVersion></此处写报文体节点></此处写根节点>"] dataUsingEncoding:NSUTF8StringEncoding]];
    
    [request setHTTPBody:postBody];
    
    NSString *bodyStr = [[NSString alloc] initWithData:postBody  encoding:NSUTF8StringEncoding];
    NSLog(@"bodyStr: %@ ",bodyStr);
    
    //get response
    NSHTTPURLResponse* urlResponse = nil;
    NSError *error = [[NSError alloc] init];
    NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&error];
    NSString *result = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
    NSLog(@"Response Code: %ld", (long)[urlResponse statusCode]);
    if ([urlResponse statusCode] >= 200 && [urlResponse statusCode] < 300) {
        NSLog(@"Response: %@", result);
    }
}


2、xml的post传递,不传参

-(void) postxml
{
    
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
    [request setURL:[NSURL URLWithString:URLstr]];
    [request setHTTPMethod:@"POST"];//声明请求为POST请求
    //set headers
    NSString *contentType = [NSString stringWithFormat:@"text/xml"];//Content-Type数据类型设置xml类型
    [request addValue:contentType forHTTPHeaderField: @"Content-Type"];
    //create the body
    NSMutableData *postBody = [NSMutableData data];
    [postBody appendData:[[NSString stringWithFormat:@"<此处写根节点><此处写报文头节点><reqUserId>123456</reqUserId><authId>LLLL</authId><authPw>123456</authPw></此处写报文头节点>"] dataUsingEncoding:NSUTF8StringEncoding]];
    
    [postBody appendData:[[NSString stringWithFormat:@"<此处写报文体节点><deviceCode>2223222</deviceCode><appId>FaceQualityCheck</appId><operateSystem>iOS</operateSystem><operateSystemVersion>8.3</operateSystemVersion></此处写报文体节点></此处写根节点>"] dataUsingEncoding:NSUTF8StringEncoding]];
    
    [request setHTTPBody:postBody];
    
    NSString *bodyStr = [[NSString alloc] initWithData:postBody  encoding:NSUTF8StringEncoding];
    NSLog(@"bodyStr: %@ ",bodyStr);
    
    //get response
    NSHTTPURLResponse* urlResponse = nil;
    NSError *error = [[NSError alloc] init];
    NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&error];
    NSString *result = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
    NSLog(@"Response Code: %ld", (long)[urlResponse statusCode]);
    if ([urlResponse statusCode] >= 200 && [urlResponse statusCode] < 300) {
        NSLog(@"Response: %@", result);
    }
}


3、xml解析


1.网上搜索GDataXMLNode,下载得到GDataXMLNode.h和GDataXMLNode.m,导入工程。

2.再导入libxml2.tbd库。

3.在工程的“Build Settings”页中找到“Header Search Path”项,添加/usr/include/libxml2"到路径中
4.编译,如工程能编译通过,则说明GDataXMLNode添加成功

3.1解析xml文本

NSString *xmlPath = [[NSBundlemainBundle] pathForResource:@"test"ofType:@"xml"];
NSString *xmlString = [NSStringstringWithContentsOfFile:xmlPath encoding:NSUTF8StringEncodingerror:nil];
GDataXMLDocument *xmlDoc = [[GDataXMLDocumentalloc] initWithXMLString:xmlString options:0 error:nil];
GDataXMLElement *xmlEle = [xmlDoc rootElement];
NSArray *array = [xmlEle children];
NSLog(@"count : %d", [array count]);

for (int i = 0; i < [array count]; i++) {
    GDataXMLElement *ele = [array objectAtIndex:i];
    
    // 根据标签名判断
    if ([[ele name] isEqualToString:@"name"]) {
        // 读标签里面的属性
        NSLog(@"name --> %@", [[ele attributeForName:@"value"] stringValue]);
    } else {
        // 直接读标签间的String
        NSLog(@"age --> %@", [ele stringValue]);
    }
    
}
}

3.2解析返回数据,
responseData是返回的data

GDataXMLDocument *document=[[GDataXMLDocument alloc]initWithData:responseData options:kNilOptions error:nil];
GDataXMLElement *root=document.rootElement;
NSArray *arr1=root.children;
for (int i = 0; i < [arr1 count]; i++) {
    GDataXMLElement *ele = [array objectAtIndex:i];
    
    // 根据标签名判断
    if ([[ele name] isEqualToString:@"name"]) {
        // 读标签里面的属性
        NSLog(@"name --> %@", [[ele attributeForName:@"value"] stringValue]);
    } else {
        // 直接读标签间的String
        NSLog(@"age --> %@", [ele stringValue]);
    }
    
}




4、百度上搜集的常见页面访问返回的信息意义:


400 错误请求 — 请求中有语法问题,或不能满足请求。 
404 找不到 — 服务器找不到给定的资源;文件不存在
500 内部错误 — 因为意外情况,服务器不能完成请求 或者出问题了

2xx 成功  
200 正常;请求已完成。  
201 正常;紧接 POST 命令。  
202 正常;已接受用于处理,但处理尚未完成。  
203 正常;部分信息 — 返回的信息只是一部分。  
204 正常;无响应 — 已接收请求,但不存在要回送的信息。  
3xx 重定向  
301 已移动 — 请求的数据具有新的位置且更改是永久的。  
302 已找到 — 请求的数据临时具有不同 URI。  
303 请参阅其它 — 可在另一 URI 下找到对请求的响应,且应使用 GET 方法检索此响应。  
304 未修改 — 未按预期修改文档。  
305 使用代理 — 必须通过位置字段中提供的代理来访问请求的资源。  
306 未使用 — 不再使用;保留此代码以便将来使用。  
4xx 客户机中出现的错误  
400 错误请求 — 请求中有语法问题,或不能满足请求。  
401 未授权 — 未授权客户机访问数据。  
402 需要付款 — 表示计费系统已有效。  
403 禁止 — 即使有授权也不需要访问。  
404 找不到 — 服务器找不到给定的资源;文档不存在。  
407 代理认证请求 — 客户机首先必须使用代理认证自身。  
415 介质类型不受支持 — 服务器拒绝服务请求,因为不支持请求实体的格式。  
5xx 服务器中出现的错误  
500 内部错误 — 因为意外情况,服务器不能完成请求。  
501 未执行 — 服务器不支持请求的工具。  
502 错误网关 — 服务器接收到来自上游服务器的无效响应。  
503 无法获得服务 — 由于临时过载或维护,服务器无法处理请求。

国产信创麒麟操作系统 (kylin v10 x86架构) 离线安装nginx步骤(亲测,超详细步骤)、修改nginx配置文件、启动、重启、关闭nginx记录(亲测有效) 阅读详情

相关推荐

整车CAN网络错误帧排查方法

本文围绕 CAN 总线错误帧展开,先剖析其产生原因,涵盖物理连接与硬件问题、电磁兼容性问题、总线负载与设计问题及配置问题;再阐述位错误、填充错误等 5 类错误帧类型;接着说明错误帧与总线 BUSOFF 的关系,解析主动 / 被动错误状态及 BUSOFF 的触发与恢复;还结合整车故障案例做实际分析,指出错误帧根源多为线束或控制器问题。最后总结,强调错误帧是 CAN 协议保障高鲁棒性的机制,掌握相关知识助工程师提升 CAN 网络处理能力。

车载网络小D的博客 1247

ios网络学习------7 xml格式数据的请求处理

用NSXMLParser解析XML文件过程:  1 创建NSXMLParser实例,并传入从服务器接收XML数据。   2 定义解析器代理   3 解析器解析。   4 通过解析代理方法完成XML数据的解析。 #pragma mark 加载xml - (void)loadXML { //获取网络数据。 NSLog(@"load xml"); //从web服务器加载

西北风的专栏 5888

用Python turtle库 绘制皮卡丘

Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。 turtle基础知识参考: https://gitchat.blog.youkuaiyun.com/article/details/90696190 https://blog.csdn.ne...

qq_36295856的博客 2万+

IOS用NSXMLParser实现XML解析

再次对xml进行解析,又有了些理解,如果有不对的地方,请给小弟指出,谢谢! [html] view plaincopy xml version="1.0" encoding="UTF-8"?>  result>      meeting addr="203">          creator>张一creator>          member>             

中国iOS开发者协会官方博客 941

大白话系列:什么是微服务

用大白话和实际例子来通俗易懂地告诉你什么是微服务~

2401_87403086的博客 1242

保姆级教程:在RK3588开发板上用MPP库实现H.264硬编码(附完整代码)

本文详细介绍了在RK3588开发板上使用MPP库实现H.264硬编码的全流程,包括环境准备、MPP库编译、编码器初始化与配置、数据输入与编码流程以及高级性能优化技巧。通过实战案例和完整代码,帮助开发者充分利用RK3588的VPU硬件加速能力,提升视频编码效率和质量。

weixin_28716769的博客 414

iphone实现xml的post传递,并且接收数据

<br /><br />在iphone开发中,经常会遇到和服务器端交互数据,下面代码是向服务器端传递一个xml数据流,服务器端接受数据并返回一个xml数据类型。<br />iphone传递数据的代码:<br />-(void) postxml <br />{ <br />    //prepar request <br />    NSString *urlString = [NSString stringWithFormat:@"path"]; <br />    NSMutableURLRequest

ios专栏 5349

第 0 篇|开篇:为什么我们要从 RNN 讲到 Transformer?

本文介绍了NLP模型的发展历程,从早期规则式方法到如今Transformer模型的演进脉络。文章强调理解NLP技术需要从基础模型入手,重点分析了传统机器学习的局限性(无法处理变长有序输入和深层语义关联),以及RNN如何通过循环结构首次实现顺序依赖捕捉。作者指出Transformer之所以成为主流,是因为它通过自注意力机制解决了RNN的核心痛点(低效串行处理和长距离依赖问题)。专栏将采用"从问题到解决方案"的讲解方式,帮助读者建立完整的NLP知识体系,避免孤立学习和盲目追新。全文旨在为初学

记录 IT 领域经验与见解的博客 73

iOS中发送xml给服务器

一、用URLSession请求 NSString *soapStr = [NSString stringWithFormat:@"&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\ &lt;soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xs...

风的坚持 900

51单片机 步进电机正反转控制+Proteus仿真

51单片机 步进电机正反转控制+Proteus仿真 Proteus仿真 实例代码 /*************** ******************/ #include <reg52.h> #define uint unsigned int #define uchar unsigned char uchar code FFW[]= { 0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09 }; uchar code REV[]= { 0x09,0x

perseverance51博客 2787

华为OD机试 - 停车场费用统计 - HashSet(Python/JS/C/C++ 双机位C卷 100分)

本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。停车场统计当日总收费,包月的车不统计,不包月的车半个小时收一块钱,不满半小时不收费,如果超过半小时,零头不满半小时按半小时算,每天11:30-13:30时间段不收费,如果一辆车停车时间超过8小时后不收费。现提供停车场进出车辆的统计信息,需要你来计

学Java,找哪吒 238

iOS 通过URL网络获取XML数据的两种方式

下面简单介绍如何通过url获取xml的两种方式。 第一种方式相对简单,使用NSData的构造函数dataWithContentsOfURL;不多解释,直接上代码咯。 NSURL *url = [NSURL URLWithString:@"http://222.73.161.212/ispace2/servlet/com.lemon.xml.XmlAction"];

小邓笔记 5583

领域知识图谱构建的技术流程

因此概念的属性定义十分重要,通常大部分知识库中的概念属性都是采用人工定义等方式生成的,通用知识图谱则可以从开放数据集中获取概念的属性,然后从在线百科中学习实体的属性,并对实体属性进行往上规约从而生成概念的属性。由于百科的分类体系都是经过了百科管理员或是高级编辑人员的校验,其分类系统中的数据可靠性非常高,因此从百科中抽取概念和实体,通常将标题作为实体的候选,而将百科中的分类系统直接作为概念的候选。为了对知识进行合理的组织,更好地描述知识本身与知识之间的关联,需要对知识图谱的模式进行良好的定义。

weixin_43961909的博客 334

iOS网络编程开发—JSON解析与XML解析

一、什么是JSON JSON是一种轻量级的数据格式,一般用于数据交互 服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外)   JSON的格式很像OC中的字典和数组 {"name" : "jack", "age" : 10} {"names" : ["jack", "rose", "jim"]} 标准JSON格式的注意点:key必须用双引号   要想从JS

Jason 的博客 4976

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

iPhone实现XML的POST传递并接收数据

本文介绍对是iPhone实现XML的POST传递并接收数据,主要是向服务器端传递一个xml数据流,服务器端接受数据并返回一个xml数据类型。 AD:51CTO 网+ 第十二期沙龙:大话数据之美_如何用数据驱动用户体验 iPhone实现XML的POST传递并接收数据是本文要介绍的内容,文章是基于代码实现,在iphone开发中,经常会遇到和服务器端交互数据,下面代码

wuruiaoxue的专栏 454

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

iOS 网络请求及数据解析

iOS 网络请求,数据解析

ccflying88的专栏 8555

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

[iOS开发]网络请求之---GET和POST

[iOS开发]网络请求之—GET和POST GET和POST的区别 从字面意思来看,GET是向服务器发索取数据的一种请求,而Post是向服务器提交数据的一种请求 GET是获取信息,而不是修改信息,类似数据库查询功能一样,数据不会被修改 GET请求的参数会跟在url后进行传递,请求的数据会附在URL之后,以?分割URL和传输数据,参数之间以&相连,%XX中的XX为该符号以16进制表示的ASCII,如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE

weixin_51638861的博客 1315

iOS网络操作之AFNetworking

众所周知,苹果搞的一套框架NSContention发送请求与接收请求的方式十分繁琐。操作起来很不方便。不仅要做区分各种请求设置各种不同的参数,而且还要经常在多线程里操作,同时还要对请求与返回的数据做各种序列化的操作,同时还要考虑请求数据的安全等一堆问题。 一、早前的几个网络框架 1、ASI框架: HTTP终结者.很牛, 但是有BUG, 已经停止更新. 2、MKNetworkK

sky_2016的专栏 1154

iOS网络编程开发—JSON和XML数据解析

iOS网络编程开发—JSON解析 一、什么是JSON JSON是一种轻量级的数据格式,一般用于数据交互 服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外) JSON的格式很像OC中的字典和数组 {"name" : "jack", "age" : 10} {"names" : ["jack", "rose", "jim"]} 标准JSON格式的注意点...

weixin_30326741的博客 161

[iOS]没话找话-总结一下最近遇到的网络请求到底怎么写

[iOS]没话找话-总结一下最近遇到的网络请求到底怎么写

m0_74703932的博客 971

解析网络xml,并解决乱码问题

1.网络接口 private final static String SEARCH_LOCATION_ADDRESS = "http://www.yodao.com/smartresult-xml/search.s?type=mobile&amp;q=";   2.查询 try { URL url = new URL(SEARCH_LOCATION_ADDRESS +...

YK_love_GQ的专栏 353

ios afn html解析,iOS 关于AFN内部传参学习

转自http://www.cnblogs.com/shuaishuaidianzi/p/5282579.html对于iOS端的特殊性 不用form-data(也就是表单)传流 直接用post传参的形式传递流 自己的一点感悟和小结不用form-data(也就是表单)传流 直接用post传参的形式传递流这里面我们介绍的是第三方框架 AFNetworking:AFNetworking是一个轻量级的i...

weixin_39995439的博客 430

iOS网络编程开发笔记1—JSON和XML数据解析

iOS网络编程开发—JSON和XML数据解析 iOS网络编程开发—JSON解析 一、什么是JSON JSON是一种轻量级的数据格式,一般用于数据交互 服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外)   JSON的格式很像OC中的字典和数组 {"name" : "jack", "age" : 10} {"names" : ["jack", "

a466468841的博客 750

iOS开发网络篇—JSON数据的解析

iOS开发网络篇—JSON介绍 一、什么是JSON JSON是一种轻量级的数据格式,一般用于数据交互 服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外)   JSON的格式很像OC中的字典和数组 {"name" : "jack", "age" : 10} {"names" : ["jack", "rose", "jim"]}

彼岸大鱼的专栏 422

iOS网络开发——解析与封装JSON数据

一、什么是JSON JSON是一种轻量级的用于交换结构化信息的数据格式。 JSON的数据格式与Objective-C中得NSDictionary很相似,如下代码片段所示{ "person":{ "firstName":"John", "lastName":"Jones", "email":{ "emailAddr":"xxxxx@xxx.com", "primary"

chy305chy的专栏 1985

对于iOS端的特殊性 不用form-data(也就是表单)传流 直接用post传参的形式传递流 自己的一点感悟和小结...

不用form-data(也就是表单)传流 直接用post传参的形式传递流 这里面我们介绍的是第三方框架 AFNetworking: AFNetworking是一个轻量级的iOS网络通信类库。它建立在NSURLConnection和NSOperation等类库的基础上,让很多网络通信功能的实现变得十分简单。它支持HTTP请求和基于REST的网络服务(包括GET、POST、 PUT、DELET...

weixin_34032621的博客 228
上一篇: iOS 旋转图片 将相机拍摄的横屏图片旋转成竖屏
下一篇: swift与OC之间不得不知道的21点
oneTagTag
博客等级 码龄11年 1粉丝 19原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值