IOS学习之获取远程数据NSURL

2024-05-26 12:48

本文主要是介绍IOS学习之获取远程数据NSURL,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

数据获取的话 我这边使用的数据格式是JSON格式的数据 (不知道JSON的请自行百度)

在一开始实现的时候我是先写个c# 的webservice服务的,然后发现通过我这个方法调用过来之后返回的数据是

XML格式的..这样的话,为了获得里面的数据我还需要再解析XML一遍.非常的麻烦(苦逼的程序员就是怕麻烦的人物啊...)

然后我这边就分析了下数据获取的实现原理...然后就将服务提供换成了 C# 网页中的 一般处理程序 也就是.ashx文件

至于.ashx文件怎么写  请在本文备注部分查看

http://XXXXX.XXXX.XXX/WebServicesForIOS/IOSWebservices.ashx ? 参数....

这个是我们.ashx的地址

{"Result":"True","Data":{"ID":196,"用户名":"dl","密码":"dl","姓名":"dl","角色":"dl","是否是管理员":"True"}}

 这个是返回的数据

 

接下来就直接开始讲OC部分的实现吧

首先大家需要新建一个类.然后继承至NSObject类 就好了

命名的话我是叫 "GetWebInfo"

完成后XCODE会创建两个文件 分别是GetWebInfo.h与GetWebInfo.m

 

首先打开 .h文件

改成这样

复制代码
#import <Foundation/Foundation.h>#define WEBADDRESS @"http://XXXXX.XXX.XXX/WebServicesForIOS/IOSWebservices.ashx"@interface GetWebInfo : NSObject{NSString *parameters;
}
@property(nonatomic,retain) NSString *parameters;
-(NSString *)dogetWebInfo;
@end
复制代码

我这边定义了一个全局的 定量

WEBADDRESS

  一个string类型的变量

parameters

 一个返回string 的方法

-(NSString *)dogetWebInfo;

接下来我来分别讲下这三个的作用

首先是定量 WEBADDRESS  该定量的作用就是配置地址.这样的话 如果我需要访问不同的地址的时候只要修改一下该文件就可以了.至于为什么要这么做呢?相信大家应该都是有很多测试地址和正式地址的..到时候只要修改一下前面的网页链接就可以轻松搞定测试与正式的切换了

然后是parameters   就是参数了 .这边的参数的话我是用很土的办法 由大家自己拼接string然后传递 

大致的格式就是 Method=方法名&参数1名=参数1&参数2名=参数2 这样的拼接 

这样的话 我调用不同的方法 只需要传递 对应的方法名以及所需要的参数就可以了 然后他就会通过 dogetWebInfo来获取数据了.

然后是-(NSString *)dogetWebInfo;  

其实讲了这么多 核心的就是dogetWebInfo方法了 请直接看.m文件

复制代码
#import "GetWebInfo.h"
@implementation GetWebInfo
@synthesize parameters;
-(NSString *)dogetWebInfo{NSURL *url = [NSURL URLWithString:WEBADDRESS];NSData *queram=[parameters dataUsingEncoding:NSUTF8StringEncoding];NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:url];[urlRequest setHTTPMethod:@"POST"];[urlRequest setHTTPBody:queram];NSData* result = [NSURLConnection sendSynchronousRequest:urlRequest returningResponse:nil error:nil];NSString *string=[[NSString alloc] initWithData:result encoding:NSUTF8StringEncoding];return  string;
}
@end
复制代码

我来细节的解释下获取数据的实现

我们这边需要用的是 NSURL类 首先是定义Nsurl的地址

然后queram 呢就是我们的参数拉

urlRequest 就是返回类了

然后是定义 他是Post传输还是get传输再然后setHTTPBody的作用呢就是 设置参数.

result 呢就是返回的结果 这边返回的结果呢是NSData类型的

所以最后呢 需要讲result转化为string类型..就可以获得我们的数据了.

之后呢我们就可以对获取过来是json格式的数据进行操作了

当然这边他目前还是nsstring 格式的 我们还需要转换成可以使用的格式..但是简单来讲我们已经完成了数据获取的全部内容了

是不是非常简单呢?嘿嘿就是这么简单!

PS:这边返回的数据 呢是 在网页中打开是什么 获取 获取的就是什么.

大家都知道 如果我们直接在网页中访问webservice的时候他是包含xml 的内容的  实际的内容他会放在<string></string>节点当中

也就是这样分析.所以我才改用.ashx的方法

这篇关于IOS学习之获取远程数据NSURL的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1004516

相关文章

使用SpringBoot+InfluxDB实现高效数据存储与查询

《使用SpringBoot+InfluxDB实现高效数据存储与查询》InfluxDB是一个开源的时间序列数据库,特别适合处理带有时间戳的监控数据、指标数据等,下面详细介绍如何在SpringBoot项目... 目录1、项目介绍2、 InfluxDB 介绍3、Spring Boot 配置 InfluxDB4、I

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Java整合Protocol Buffers实现高效数据序列化实践

《Java整合ProtocolBuffers实现高效数据序列化实践》ProtocolBuffers是Google开发的一种语言中立、平台中立、可扩展的结构化数据序列化机制,类似于XML但更小、更快... 目录一、Protocol Buffers简介1.1 什么是Protocol Buffers1.2 Pro

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

Python实现数据可视化图表生成(适合新手入门)

《Python实现数据可视化图表生成(适合新手入门)》在数据科学和数据分析的新时代,高效、直观的数据可视化工具显得尤为重要,下面:本文主要介绍Python实现数据可视化图表生成的相关资料,文中通过... 目录前言为什么需要数据可视化准备工作基本图表绘制折线图柱状图散点图使用Seaborn创建高级图表箱线图热

MySQL数据脱敏的实现方法

《MySQL数据脱敏的实现方法》本文主要介绍了MySQL数据脱敏的实现方法,包括字符替换、加密等方法,通过工具类和数据库服务整合,确保敏感信息在查询结果中被掩码处理,感兴趣的可以了解一下... 目录一. 数据脱敏的方法二. 字符替换脱敏1. 创建数据脱敏工具类三. 整合到数据库操作1. 创建服务类进行数据库

MySQL中处理数据的并发一致性的实现示例

《MySQL中处理数据的并发一致性的实现示例》在MySQL中处理数据的并发一致性是确保多个用户或应用程序同时访问和修改数据库时,不会导致数据冲突、数据丢失或数据不一致,MySQL通过事务和锁机制来管理... 目录一、事务(Transactions)1. 事务控制语句二、锁(Locks)1. 锁类型2. 锁粒

Qt中实现多线程导出数据功能的四种方式小结

《Qt中实现多线程导出数据功能的四种方式小结》在以往的项目开发中,在很多地方用到了多线程,本文将记录下在Qt开发中用到的多线程技术实现方法,以导出指定范围的数字到txt文件为例,展示多线程不同的实现方... 目录前言导出文件的示例工具类QThreadQObject的moveToThread方法实现多线程QC

SpringBoot集成EasyExcel实现百万级别的数据导入导出实践指南

《SpringBoot集成EasyExcel实现百万级别的数据导入导出实践指南》本文将基于开源项目springboot-easyexcel-batch进行解析与扩展,手把手教大家如何在SpringBo... 目录项目结构概览核心依赖百万级导出实战场景核心代码效果百万级导入实战场景监听器和Service(核心

使用Python开发一个Ditto剪贴板数据导出工具

《使用Python开发一个Ditto剪贴板数据导出工具》在日常工作中,我们经常需要处理大量的剪贴板数据,下面将介绍如何使用Python的wxPython库开发一个图形化工具,实现从Ditto数据库中读... 目录前言运行结果项目需求分析技术选型核心功能实现1. Ditto数据库结构分析2. 数据库自动定位3