iOS 之ASIHTTPRequest官方文档

iOS开源库解析之ASIHTTPRequest 坚持 成长 每日一篇前言ASIHTTPRequest框架作者已经停更,今日公司ASIHTTPRequest从项目移除需要重构使用了ASIHTTPRequest的代码,要想重构ASIHTTPRequest最好对ASIHTTPRequest有所了解。今日花了2天时间看了ASIHTTPRequest源码,以此博客作为一些理解纪录内容 ASIHTTPRequest和ASIFormDataRequest的关系 阅读详情

1.创建并运行一个请求

1.1 创建一个同步请求

创建一个同步请求是使用ASIHTTPRequest的最简单的方式。发送消息startSynchronous会在同一个线程中执行这个请求,并且当请求结束的时候会返回控制权(成功或者其它的情况)。

通过error属性检查问题。

调用方法responseString从返回结果中获取字符串,不要使用这个方法获取二进制数据,使用方法responseData获得一个NSData对象。对于大的文件,设置你的请求的downloadDestinationPath属性用于下载文件。

      - (IBAction)grabURL:(id)sender

      {

               NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];

               ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];

               [request startSynchronous];

               NSError *error = [request error];

               if (!error) {

                       NSString *response = [request responseString];

               }

        }

注意:一般来说,你应该优先使用异步请求而不是同步请求。当你在主线程中使用ASIHTTPRequest的同步请求时,你的应用的用户界面会被锁定并且在整个网络请求期间不可用。

1.2 创建一个异步请求

做与上一个例子相同的事情,但是这个请求在后台运行。

       - (IBAction)grabURLInBackground:(id)sender

      {

              NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];

              ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];

              [request setDelegate:self];

              [request startAsynchronous];

       }

       - (void)requestFinished:(ASIHTTPRequest *)request

       {

              // Use when fetching text data

              NSString *responseString = [request responseString];

              // Use when fetching binary data

              NSData *responseData = [request responseData];

       }

       - (void)requestFailed:(ASIHTTPRequest *)request

       {

              NSError *error = [request error];

       }

我们设置了请求的delegate属性,所以当请求完成或失败时,我们能够接到通知。

这是创建异步请求的最简单的方式,它会在一个位于后台的全局的NSOperationQueue中运行。为了实现更多复杂的操作(例如跟踪多个请求的处理过程),你可能想创建自己的queue,这是下面将要讲到的。

1.3 使用blocks

从1.8版本起,我们可以在支持它们的平台上通过使用blocks完成上面例子的功能。

       - (IBAction)grabURLInBackground:(id)sender

      {

              NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];

              __block ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];

              [request setCompletionBlock:^{

                    // Use when fetching textdata

                    NSString *responseString = [request responseString];

                    // Use when fetching binarydata

                    NSData *responseData = [request responseData];

              }];

              [request setFailedBlock:^{

                    NSError *error = [request error];

              }];

              [request startAsynchronous];

       }

    注意当我们声明这个请求时标识符__block的使用,这是非常重要的!它告诉这个block不要retain这个请求,因为这个请求总是retain这个block,这样就避免了一个retain-cycle 。

1.4 使用队列

这个例子做相同的事情,但是这次我们为我们的请求创建一个NSOperationQueue。

使用你创建的NSOperationQueue(或者下面讲到的ASINetworkQueue),就可以对异步请求进行更多的控制。当使用一个queue的时候,只有一定数量的请求同时运行。如果你向一个队列中添加的请求多于属性maxConcurrentOperationCount指定的数量,多出的请求会等到其它的请求结束才能开始运行。

       - (IBAction)grabURLInTheBackground:(id)sender

       {

              if (![self queue]) {

                    [self setQueue:[[[NSOperationQueue alloc] init] autorelease]];

              }

              NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];

              ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];

              [request setDelegate:self];

              [request setDidFinishSelector:@selector(requestDone:)];

              [request setDidFailSelector:@selector(requestWentWrong:)];

              [[self queue] addOperation:request]; //queue is anNSOperationQueue

       }

       - (void)requestDone:(ASIHTTPRequest *)request

       {

              NSString *response = [request responseString];

        }

        - (void)requestWentWrong:(ASIHTTPRequest *)request

       {

              NSError *error = [request error];

       }

       在上面的例子中,’queue’是我们控制器的一个retainedNSOperationQueue属性。

       我们设置自定义的selectors,它们会在请求成功或失败后被调用。如果你不设置这些,默认的(requestFinished:和requestFailed:)会向前面的例子中那样被使用。

 

1.5 在代理方法中处理多个请求的成功和失败状态

如果你需要处理多个请求的成功和失败的状态,你可以有几种选择:

1.           如果你的请求是相同的类型,但是你想区分它们,你可以用自定义的数据设置每个请求的字典类型的属性userInfo,这样你就可以在请求的成功或失败的代理方法中读取设置的值,通过这些值区分不同的请求。更简单的一种方式,你可以设置请求的tag属性。这两种属性是提供给你使用的,它们不会被发送到服务端。

2.           对于每个请求,如果你需要一个完全不同的方式处理成功或失败的返回结果,你可以针对每个请求设置不同的setDidFinishSelector和setDidFailSelector。

3.           对于更复杂的情况,或者说如果你想在后台解析返回结果,可以这堆每种类型的请求,创建ASIHttpRequest的一个最小子类,并且重载方法requestFinished:和failWithError:。

注意:最好避免在代理方法中通过请求的URL区分不同的请求,因为当重定向的时候URL属性会改变。如果你真的想使用请求的URL,可以使用[request originalURL],这样总会是第一次请求的url。

1.6 关于ASINetworkQueues

    ASINetworkQueue是类NSOperationQueue的子类,它提供了一些额外的功能。

它主要的目的是使你能够跟踪整个queue的上传和下载的过程。

另外,ASINetworkQueues提供了一些额外的代理方法:

l   requestDidStartSelector

    队列中的每个请求开始执行的时候调用这个方法。你可以使用它作为”设置你添加到queue的请求的代理方法并指定这个请求的didStartSelector”的替代方法。

l   requestDidReceiveResponseHeaderSeletor

当队列中的一个请求收到服务端回复的请求头时被调用。对于大数据量的下载,这个会在真正的下载完成之前被调用。你可以使用这个作为“设置你添加到queue中的请求的代理并且指定请求的didFailSelector”的一个替代方案。

l   requestDidFinishSelector

    当队列中一个请求成功时被调用。你可以使用这个作为“设置你添加到队列中请求的代理并指定一个didFinishSelector”的一个替代方案。

l    requestDidFailSelector

    当队列中一个请求失败时被调用。你可以使用这个作为“设置你添加到队列中请求的代理并指定一个didFailSelector”的一个替代方案。

l     queueDidFinishSelector

当整个队列完成时才被调用,不管单个的请求是成功还是失败。

要使用这些,可以设置队列的代理(而不是设置请求的代理)为实现这些selector的控制器。

       ASINetworkQueues的使用和NSOperationQueues有一点不同,就是添加到ASINetworkQueues的请求并不会马上开始执行。当使用一个ASINetworkQueue时,添加你想运行的操作,然后调用[queue go]。当你开启一个队列并打开“进度控制”标志时,它首先会为队列中的每个请求发送一个获取头部信息的请求,以获得要下载的数据的大小。一旦队列获得了要下载的大小,它能准确的显示整个下载过程,真正的下载也会开始。

注意:

       当你添加一个请求到一个已经开始的ASINetworkQueue中会发生什么?当你使用ASINetworkQueue跟踪一些请求的整个进展,当添加一个新的请求到队列,只有新的请求开始运行的时候,整个队列会进入后台运行。当队列开始运行的时候后,新添加的请求不会再请求头部信息,所以当你一次添加很多请求到一个已经开始运行的队列,整个进度不会立刻更新。

如果一个队列已经开始运行,你不需要再调用[queuego]。

 

    当ASINetworkQueue中的一个请求执行失败时,队列默认会取消所有的请求。你可以通过 [queue setShouldCancelAllRequestsOnFailure:NO]

取消这个属性。

 ASINetworkQueue只能运行ASIHTTPRequest操作,它们不能用于一般的操作。添加一个非ASIHTTPRequest的NSOperation会触发一个异常。

     注意:这个一个完整的演示基本的创建和使用ASINetworkQueue例子:http://gist.github.com/150447。

1.7 取消一个异步请求

       调用[request cancel]取消一个异步请求(一个以[ [request startAsynchronous] ]开始的请求或者你创建的运行在队列中的请求)。注意你不能取消一个同步请求。

当你取消一个请求,这个请求会把这个当作一个错误,会调用请求的代理或者队列的代理的失败处理方法。如果你不希望这个行为,在取消一个请求之前设置这个请求的代理为nil或者使用方法clearDelegatesAndCancel取消请求。

           //Cancels an asynchronous request

           [requestcancel]

           //Cancels an asynchronous request, clearing all delegates and blocks first

            [requestclearDelegatesAndCancel];

使用一个ASINetworkQueue时,当你取消了队列中的一个请求,那么队列中所有的请求都会被取消除非你设置了队列的属性shouldCancelAllRequestsOnFailure为NO(YES是默认值)。

        // When a request inthis queue fails or is cancelled, other requests will continue to run

        [queuesetShouldCancelAllRequestsOnFailure:NO];

        // Cancel all requestsin a queue

        [queue cancelAllOperations];

1.8 当一个请求将要结束之前安全的处理即将被销毁的代理

请求不retain它们的代理,所以当请求正在执行的时候你的代理可能会被释放掉,清除请求的代理属性是至关重要的。在大多数情况下,如果你的代理将要被释放,你也不再关心这个请求的状态,所以你可能也想取消这个请求。

    在下面的例子中,我们的控制器有一个属性为retain的ASIHTTPRequest类型的实例变量。我们在方法delloc的实现中调用请求的clearDelegatesAndCancel方法,正好在在释放这个请求之前。

       // Ddealloc method for ourcontroller

       - (void)dealloc

       {

              [requestclearDelegatesAndCancel];

               [requestrelease];

               ...

              [superdealloc];

       }

2.发送数据

2.1 设置请求头

              ASIHTTPRequest *request =[ASIHTTPRequest requestWithURL:url];

              [requestaddRequestHeader:@"Referer"value:@"http://allseeing-i.com/"];

2.2 使用ASIFormDataRequest发送一个POST请求

    可以使用ASIFormDataRequest发送与网页格式兼容的POST请求。以application/x-www-form-urlencoded格式POST数据或者以multipart/form-data格式POST二进制数据或文件。如果需要文件中的数据会从硬盘读取,所以可以提交大的文件,只要你的Web服务器支持处理它们。

              ASIFormDataRequest *request = [ASIFormDataRequestrequestWithURL:url];

              [request setPostValue:@"Ben"forKey:@"first_name"];

              [request setPostValue:@"Copsey"forKey:@"last_name"];

              [request setFile:@"/Users/ben/Desktop/ben.jpg"forKey:@"photo"];

       ASIFormDataRequest会自动检测通过方法setFile:forKey添加到POST的文件的mine类型,并且把这个添加到mime头中发送到服务端。如果你愿意,你可以使用更长的形式代替这种方式:

              ASIFormDataRequest *request = [ASIFormDataRequestrequestWithURL:url];

              // Upload a file on disk

              [request setFile:@"/Users/ben/Desktop/ben.jpg" withFileName:@"myphoto.jpg"andContentType:@"image/jpeg" forKey:@"photo"];

              // Upload an NSData instance

              [request setData:imageData withFileName:@"myphoto.jpg"andContentType:@"image/jpeg" forKey:@"photo"];

       你可以使用add接口针对一个参数发送多个值:

              ASIFormDataRequest *request = [ASIFormDataRequestrequestWithURL:url];

              [request addPostValue:@"Ben" forKey:@"names"];

              [request addPostValue:@"George"forKey:@"names"];

              [request addFile:@"/Users/ben/Desktop/ben.jpg"forKey:@"photos"];

              [requestaddData:imageData withFileName:@"george.jpg"andContentType:@"image/jpeg" forKey:@"photos"];

       查看ASIFormDataRequest.h获取向POST添加参数的全部的方法列表。

2.3 PUT请求和自定义POSTs

    如果你想通过PUT发送数据,或者想通过POST但是想自己创建POST包体,可以使用appendPostData:or appendPostDataFromFile:。

              ASIHTTPRequest *request =[ASIHTTPRequest requestWithURL:url];

              [request appendPostData:[@"Thisis my data" dataUsingEncoding:NSUTF8StringEncoding]];

              // Default becomes POST when you useappendPostData: / appendPostDataFromFile: / setPostBody:

              [requestsetRequestMethod:@"PUT"];

       如果你想发送大量的数据但是不想使用ASIFormDataRequest,可以看下面将要介绍的“informationon streaming post bodies from disk ”。

3.下载数据

3.1 直接把回复内容下载到文件

如果你请求的资源非常的大,你可以直接下载到文件以节省内存。这样的话,ASIHTTPRequest不需要一下子在内存中维护所有的回复内容。

              ASIHTTPRequest*request = [ASIHTTPRequest requestWithURL:url];

              [requestsetDownloadDestinationPath:@"/Users/ben/Desktop/my_file.txt"];

       当你使用属性downloadDestinationPath下载数据到一个文件时,在请求处理过程中数据会保存在一个临时文件中。当请求完成时,下面两个事情的其中一个会发生:

l   如果数据是gzip压缩的(查看gzip压缩数据),被压缩的文件会解压到downloadDestinationPath指定的路径下,临时文件会被删除。

l   如果数据不是压缩的,临时文件会被移动到downloadDestinationPath指定的路径下,并会覆盖同名的文件。

注意:如果回复的包体是空的,文件不会被创建。如果一个请求可能会返回一个空的包体,再你做任何尝试之前,请先检查下文件是否存在。

3.2 处理到来的回复数据

       如果你需要处理到来的包体数据(比如:当数据还在下载的时候使用“流解析“解析回复的数据),实现代理的request:didReceiveData:方法(查看ASIHTTPRequestDelegate.h)。注意当你这样做的时候,ASIHTTPRequest不会填充responseData,也不会把回复数据写入到downloadDestinationPath指定的路径,如果你需要你必须自己保存回复的数据。

3.3 读取HTTP状态码

对于大部分HTTP状态码,ASIHTTPRequest不会做任何特殊的事情(除了重定向和认证状态码,查看下面的内容获取更多信息),因此需要你查找问题并确认你是否操作得当。

              ASIHTTPRequest *request =[ASIHTTPRequest requestWithURL:url];

              [request startSynchronous];

              int statusCode = [requestresponseStatusCode];

              NSString *statusMessage = [request responseStatusMessage];

3.4 读取回复的头部信息

              ASIHTTPRequest*request = [ASIHTTPRequest requestWithURL:url];

              [requeststartSynchronous];

              NSString*poweredBy = [[request responseHeaders]objectForKey:@"X-Powered-By"];

              NSString *contentType = [[requestresponseHeaders] objectForKey:@"Content-Type"];

3.5 处理文本编码

ASIHTTPRequest会尝试从头部的Content-Type字段读取接收到的数据的文本编码,如果它发现一个文本编码,它会设置字段responseEncoding为一个合适的 NSStringEncoding。如果它在头部字段没有发现一个文本编码,它会使用字段defaultResponseEncoding的默认值(这个字段默认值为NSISOLatin1StringEncoding)。

    当你调用[request responseString], ASIHTTPRequest会创建一个字符串,并尝试以responseEncoding指定的编码方式把接收到的数据转化到创建的字符串中。

3.6 处理重定向

ASIHTTPRequest会自动的重定向到一个新的URL当它遇到下面的一个HTTP状态码,假设一个本地的头已经发送:

l   301 Moved Permanently

l   302 Found

l   303 See Other

       当重定向发生时, responsedata的值(例如responseHeaders / responseCookies / responseData / responseString )会是从最后的地址接收到的值。

重定向的url的Cookies会存储到一个全局的cookie存储中,适当的时候会在一个重定向请求中表示服务器。

    你可以通过设置请求的属性shouldRedirect为NO关闭重定向。

注意:

       默认情况下,自动重定向只针对GET请求(没有消息体)。指定301和302重定向需要使用最初的方法符合多数浏览器的工作方式,不是HTTP协议特定的。

为了保存最初的方法(包括请求体)

针对301和302重定向,为了保存最初的方法(包括请求体),需要在请求开始执行之前,设置请求的属性shouldUseRFC2616RedirectBehaviour为YES

vue2 - 最新详细实现高德地图绘制动态热力图详细教程,在某区域或城市地图上做“热力图层“展示人流量、旅游人口密度、热量图、全国地区地理热力图,利用颜色的深浅表示密度或强度等场景(详细示例代码教程) vue2,nuxt2,高德地图,热力图,绘制热力图层,报错,卡顿,出不来怎么办,无法关闭,怎么解决这个问题,出错,城市名称,城市某个街道,城区,省份,市区,县城,乡镇,村,各省份的热力图,交通流量,人口流量,密度,旅游出行,人口数量,颜色介绍,深浅代表,人流量,vue2使用高德地图实现某个区域热力图,vue高德地图api加载热力图及关闭,接收热力图数据并渲染热力图,关掉热力图,Vue使用高德API制作热力图,热力图加载不出来,电子围栏围住热力图,vue2中使用高德地图渲染热力图组件,高德地图使用热力图详细教 阅读详情

相关推荐

ChatGPT高效制作PPT:从内容生成到设计优化全流程

人工智能技术正在改变传统办公文档的创作方式,其中自然语言处理(NLP)与生成式AI的结合为内容创作带来了革命性突破。以ChatGPT为代表的大语言模型(LLM)能够理解复杂指令并生成结构化内容,其核心原理是通过海量数据训练获得的语义理解和文本生成能力。在办公自动化场景中,这种技术特别适合解决PPT制作中的两大痛点:内容创作耗时和逻辑架构困难。通过精心设计的提示词工程,AI可以快速输出包含核心要点、数据支撑的完整内容框架,甚至直接生成Markdown格式的代码以便快速转换为PPT。对于商业计划、项目汇报等高频

weixin_42613018的博客 492

ASIHTTPRequest官方文档(一)

翻译自http://allseeing-i.com/ASIHTTPRequest/How-to-use 1.创建并运行一个请求 1.1 创建一个同步请求 创建一个同步请求是使用ASIHTTPRequest的最简单的方式。发送消息startSynchronous会在同一个线程中执行这个请求,并且当请求结束的时候会返回控制权(成功或者其它的情况)。 通过error属性检查问题。 调用方法...

hunxiejun 193

【机器学习—评估指标】混淆矩阵、准确率、精确率、召回率、F1分数、ROC曲线和AUC

机器学习评价指标是衡量模型性能的关键工具。本文介绍了常见指标及其计算方法:1.混淆矩阵展示分类预测结果分布,包含TP、TN、FP、FN四个基础指标;2.准确率反映整体预测正确率;3.精确率关注预测正例的准确性;4.召回率衡量正例检出能力;5.F1分数综合平衡精确率和召回率;6.ROC曲线通过TPR与FPR的权衡关系评估模型性能,AUC值量化区分能力。文章详细说明了各指标的定义、计算公式、适用场景及局限性,并通过Python代码示例演示了具体实现方法,特别对ROC曲线和AUC的计算原理进行了深入解析。

weixin_51375278的博客 6744

【 HTTP 请求 (Request) 】

有的资料上说 “GET 传输的数据量小, POST 传输数据量大”. 这个也是不科学的, 标准没有规定 GET 的 URL 的长度, 也没有规定 POST 的 body 的长度. 传输数据量多少,完全取决于不同浏览器和不同服务器之间的实现区别..其中我们重点关注第三个. 里面包含了一个 gitee-session-n 这样的属性, 属性值是一串很长的加密之后的信息. 这个信息就是用户当前登陆的身份标识. 也称为 “

qq_64317046的博客 2444

深入理解梅尔刻度、梅尔滤波器组和梅尔时频谱图

读取一段音频,使用短时傅里叶变换,得到普通的时频谱图,然后绘制梅尔滤波器组,值得注意的是,librosa的梅尔滤波器组函数还带有权重归一化功能,即对一个三角形滤波器的每个权重,都除以该三角形的面积,如果不希望进行该归一化,设置参数。从公式可见,对数部分可以以自然对数为底数,也可以以10为底数,不同的底数对应不同的系数,要确定当前的系数,只需要代入(1000Hz, 1000mel)即可。其中,m是当前滤波器的序号,表征了当前的时间段,k是当前频率的序号,表征了当前正在对哪一频率的。

DEDSEC_Roger的博客 1万+

别再死记硬背HJB方程了!用Python数值求解一个简单最优控制问题(附完整代码)

本文通过Python数值求解Hamilton-Jacobi-Bellman(HJB)方程,帮助读者从工程实践角度理解最优控制问题。教程涵盖从建立简单车辆控制模型到离散化HJB方程、实现值迭代算法及可视化结果的完整流程,适合具备Python基础的开发者学习。

weixin_42520796的博客 371

Python的request官方文档

emm,不是我懒。是我觉得官方文档比我强太多了,不是咕咕咕!!!小恐龙别说我!!! Request官方文档

weixin_52387684的博客 3118

立创·庐山派-K230-CanMV(嘉楠勘智)开发板通过ATK-ESP8266实现图像识别数据无线传输至原子云

本文详细介绍了如何使用立创·庐山派-K230-CanMV开发板,通过ATK-ESP8266 WIFI模块实现图像识别数据的无线传输至原子云平台。内容包括硬件连接、软件环境搭建、AT指令控制、原子云连接及数据上传的全过程,并提供了实用的调试技巧和常见问题解决方案,为物联网应用开发提供了完整实践指南。

potato的博客 741

python爬虫(一) ------ request讲义

Requests是用python语言基于urllib编写的,采用的是Apache2 Licensed开源协议的HTTP库。⼀句话——Requests是一个Python代码编写的HTTP请求库,方便在代码中模拟浏览器发送http请求。http/https 协议 是一种无状态的协议,对事物处理无记忆功能,所以每次请求都是一个独立状态。浏览器用户身份的标识,缺少的话服务器会认为你不是一个正常的浏览器用户,而是一个爬虫程序。它比urllib更加方便,可以节约大量的工作,完全满足HTTP测试需求的库。

qq_70761095的博客 1519

修改Windows hosts文件的解决方案

本文主要介绍了修改Windows hosts文件解决方案,希望能对新手有所帮助。 文章目录 1. 问题描述 2. 解决方案 2.1 安装软件 2.2 修改hosts文件

weixin_43178406的博客 1万+

PD3.0详解 电源规则,全解!!!全解!!!

电源规则 大师匈今天谈一下PD3.0的电源规则,PD3.0标准标定的规则。 USB协议声称,为了世界和平世界环境,让大家用上统一标准的充电器,不用再为每一个用电设备都配一个专门的充电器,这些充电器各种各样的都有,所以有时候大师匈也很烦!!!那么为了维护世界和平,USB协议呢就制订了这个PD快充协议,还有它的规则,只要全世界都用PD,就解决了这个大问题。 在这里先了解一个关键字,PDP: Power Delivery Power PD电源的功率。 每个PD充电产品的功率要以0.5W的精度上报,比如大师匈做的P

大师匈的博客 1万+

HTTP--Request详解

请求行请求头客户端浏览器告诉服务器一些信息常见的请求头:User-Agent:浏览器告诉服务器,我访问你使用的浏览器版本信息可以在服务器端获取该头的信息,解决浏览器的兼容性问题告诉服务器,我(当前请求)从哪里来?作用:防盗链:统计工作:请求空行空行,就是用于分割POST请求的请求头,和请求体的。请求体(正文)封装POST请求消息的请求参数的获取请求行数据方法:获取请求方式 :GET(*)获取虚拟目录:/day14获取Servlet路径: /demo1。

软件自动化测试技术交流、资源分享 556

深度学习论文: AnomalyDINO: Boosting Patch-based Few-shot Anomaly Detection with DINOv2

通过将DINOv2模型适应到一次性和少量异常检测中,并专注于工业应用少量异常检测。实验表明,这种方法不仅与现有技术相匹敌,甚至可以在许多设置中超越它们。我们提出的仅视觉方法AnomalyDINO基于补丁相似性,能够实现图像级别的异常预测和像素级别的异常分割。该方法在方法论上很简单,无需训练,因此不需要任何额外的数据进行微调或元学习。

mingo_敏 1903

做iOS开发程序员10个必需的开发工具和资源

界面总不是一件很容易事,尤其是iPhone/iPad的界面,做过iOS开发的程序员,一定会感到开发iPhone/iPad的界面是一件多么不容易的 事。这篇文章介绍了十个iOS开发的基础性工具和资源,其一定会很有效地帮你做iOS的开发。(在这里,我再闲扯一句,虽然Android的开发好像整整 XML文件界面就出来了,其明显比iOS的开发要容易很多,但是我还是觉得iOS的生命力要强过Android,看

把握自己。 3543

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【IOS开发】 - 1.开发工具介绍

【IOS开发系列】— 1.开发工具介绍   在进行IOS之前,我们首先要知道有哪些工具。俗话说“工欲善其事,必先利其器”。   在苹果官网开发社区,推荐使用的是Xcode,它是创建优秀的 Mac、iPhone 以及 iPad 应用程序的利器。 (苹果官方开发社区:https://developer.apple.com/cn/technologies/tools/)   我们再来...

Qain2008的专栏 258

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

iOS通过ASIHTTPRequest提交JSON数据

先验知识——什么是ASIHTTPRequest? 使用iOS SDK中的HTTP网络请求API,相当的复杂,调用很繁琐,ASIHTTPRequest就是一个对CFNetwork API进行了封装,并且使用起来非常简单的一套API,用Objective-C编写,可以很好的应用在Mac OS X系统和iOS平台的应用程序中。ASIHTTPRequest适用于基本的HTTP请求,和基于REST

浣熊_BUPT 3万+

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

IOS学习笔记25—HTTP操作之ASIHTTPRequest(一)

ASIHTTPRequest是一个第三方开源项目,在现在的IOS应用中多使用到这个开源类库来提供网络操作,相比于SDK提供的网络操作类库,ASIHTTPRequest使用上更加方便、效率更高,同时功能也非常强大。这是ASIHttpRequest的官网:http://allseeing-i.com/ASIHTTPRequest/ 以下是官方对ASIHttpRequest的解释: What

Ryan's zone 9936

iOS - ASIHTTPRequest 网络请求


 前言 使用 iOS SDK 中的 HTTP 网络请求 API,相当的复杂,调用很繁琐,ASIHTTPRequest 就是一个对 CFNetwork API 进行了封装,并且使用起来非常简单的一套 API,外号 “HTTP终结者”,用 Objective-C 编写,运行效率很高,可以很好的应用在 Mac OS X 系统和 iOS 平台的应用程序中,ASIHTTPR...

rstbfveradsvc 189

IOS开发:ASIHTTPRequest中HTTP请求终结者详解

IOS开发:ASIHTTPRequest中HTTP请求终结者详解 IOS开发中ASIHTTPRequest里HTTP请求终结者详解是本文要介绍的内容,主要是来学习IOS开发中请求同步的问题。今天把这个的官方文档翻译的出来以做分享,让迷途之人有路可寻.具体内容来考哪本文详细内容讲解。 ASIHTTPRequest是一款极其强劲的HTTP访问开源项目。让简单的API完成复杂的功能, 如:

zhenweicao的专栏 3350

Using ASIHTTPRequest in an iOS project

  Using ASIHTTPRequest in an iOS project 转载自 http://allseeing-i.com/ASIHTTPRequest/Setup-instructions   1) Add the files Copy the files you need to your project folder, and add them to your Xco...

stephen830 138

IOS网络请求 ASIHTTPRequest导入

1.类库下载地址ASIHTTPRequest库下载。 2.将其中的class文件下的文件全部拷贝到工程中自建的asihttprequest文件夹下。 3.导入框架:

u010311313的专栏 1084

iOS开发ASIHttpRequest介绍(一)-- ASIHttpRequest创建和执行request

来源:http://mobile.51cto.com/iphone-405168.htm 本文为大家介绍了iOS开发中ASIHttpRequest如何创建和执行request,其中包括同步请求,异步请求,使用Block,使用队列,取消异步请求等等内容。 创建NSOperationQueue,这个Cocoa架构的执行任务(NSOperation)的任务队列。我们通过ASIHTTPRequ

我爱大馅饼 833

IOS部署ASIHTTPRequest框架

ASIHttprequest是IOS中基于CFNetwork包封装的框架,该框架可以非常方便的让我们请求网络。 当然,在用到第三方的框架时,肯定是要先部署到项目中的。 部署到项目中的类文件 添加到项目中后,第一个错误就出现了,因为是ARC的项目,把上面的类一贴到项目中就报了ARC的错误 第一步:修改ASI的类为  -fno-objc-arc 就可以解决ARC的错误问题

1209

对比iOS网络组件:AFNetworking VS ASIHTTPRequest

对比iOS网络组件:AFNetworking VS ASIHTTPRequest 在开发iOS应用过程中,如何高效的与服务端API进行数据交换,是一个常见问题。一般开发者都会选择一个第三方的网络组件作为服务,以提高开发效率和稳定性。这些组件把复杂的网络底层操作封装成友好的类和方法,并且加入异常处理等。 那么,大家最常用的组件是什么?这些组件是如何提升开发效率和稳定性的?哪一款组

上善若水 1063

ASIHTTPRequest官方文档

转自: 官方文档 http://allseeing-i.com/ASIHTTPRequest/ how - to - use 中文博客 http://blog.youkuaiyun.com/workhardupc100/article/details/6941685

努力~ 385

IOS开发之──ASIHTTPRequest详解

ASIHTTPRequest是一款极其强劲的HTTP访问开源项目。让简单的API完成复杂的功能, 如: 异步请求,队列请求,GZIP压缩,缓存,断点续传,进度跟踪,上传文件,HTTP认证 在新的版本中,还加入了Objective-C闭包Block的支持,让我们的代码更加轻简灵活。 下面就举例说明它的API用法。 发起一个同步请求 同步意为着线程阻塞,在主线程中使用此方法会使

侯文富的专栏 1010
上一篇: iOS 之Autorelease
下一篇: iOS 之视频拍摄和压缩
Shicuf
博客等级 码龄16年 11粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值