iOS development-"ASI" usage examples
Last Update:2015-06-01
Source: Internet
Author: User
<span id="Label3"></p>Asi<pre class="prettyprint"><code class=" hljs objectivec"><span class="hljs-preprocessor"><span class="hljs-preprocessor">#import <span class="hljs-title">"ViewController.h"</span> </span></span><span class="hljs-preprocessor"><span class="hljs-preprocessor">#import <span class="hljs-title">"ASIHTTPRequest.h"</span> </span></span><span class="hljs-class"><span class="hljs-class"> <span class="hljs-keyword">@interface</span> <span class="hljs-title">hmviewcontroller</span> () <<span class="hljs-title">asihttprequestdelegate</span>></span></span><span class="hljs-keyword"><span class="hljs-keyword">@property</span></span>(<span class="hljs-keyword"><span class="hljs-keyword">nonatomic</span></span>,<span class="hljs-keyword"><span class="hljs-keyword">Strong</span></span>) ASIHTTPRequest *request;<span class="hljs-keyword"><span class="hljs-keyword">@end</span></span><span class="hljs-class"><span class="hljs-class"> <span class="hljs-keyword">@implementation</span> <span class="hljs-title">hmviewcontroller</span> </span></span>- (<span class="hljs-keyword"><span class="hljs-keyword">void</span></span>) viewdidload{[<span class="hljs-keyword"><span class="hljs-keyword">Super</span></span>viewdidload];<span class="hljs-comment"><span class="hljs-comment">additional setup after loading the view, typically from a nib.</span></span>}- (<span class="hljs-keyword"><span class="hljs-keyword">void</span></span>) touchesbegan: (nsset *) touches withevent: (uievent *) event{[<span class="hljs-keyword"><span class="hljs-keyword"></span> self</span>asynget];}</code></pre>Send Request<pre class="prettyprint"><code class=" hljs java">#pragma mark-asihttprequestdelegate<span class="hljs-javadoc"><span class="hljs-javadoc">/** * 1. Start sending request</span> */</span>- (<span class="hljs-keyword"><span class="hljs-keyword">void</span></span>) requeststarted: (asihttprequest *) Request{NSLog (@<span class="hljs-string"><span class="hljs-string">"requeststarted"</span></span>);}<span class="hljs-javadoc"><span class="hljs-javadoc">/** * 2. Response header information received from the server</span> */</span>- (<span class="hljs-keyword"><span class="hljs-keyword">void</span></span>Request: (asihttprequest *) Request didreceiveresponseheaders: (nsdictionary *) Responseheaders{NSLog (@<span class="hljs-string"><span class="hljs-string">"didreceiveresponseheaders"</span></span>);}<span class="hljs-javadoc"><span class="hljs-javadoc">/** * 3. Entity data received from the server (specific Data) * As long as this proxy method is implemented, responsedata\responsestring has no value */</span></span><span class="hljs-comment"><span class="hljs-comment">//-(void) request: (asihttprequest *) request Didreceivedata: (nsdata *) data</span></span><span class="hljs-comment"><span class="hljs-comment">//{</span></span><span class="hljs-comment"><span class="hljs-comment">//NSLog (@ "didreceivedata-%@", data);</span></span><span class="hljs-comment"><span class="hljs-comment">//}</span></span><span class="hljs-javadoc"><span class="hljs-javadoc">/** * 4. Server response data received</span> */</span>- (<span class="hljs-keyword"><span class="hljs-keyword">void</span></span>) requestfinished: (asihttprequest *) Request{NSLog (@<span class="hljs-string"><span class="hljs-string">"requestfinished--%@"</span></span>, [request responsedata]);}<span class="hljs-javadoc"><span class="hljs-javadoc">/** * 5. Request failed</span> */</span>- (<span class="hljs-keyword"><span class="hljs-keyword">void</span></span>) requestfailed: (asihttprequest *) Request{NSLog (@<span class="hljs-string"><span class="hljs-string">"requestfailed"</span></span>);}</code></pre>Send an asynchronous GET request<pre class="prettyprint"><pre class="prettyprint"><code class=" hljs java"><span class="hljs-javadoc">/** * 异步的GET请求 */</span>- (<span class="hljs-keyword">void</span>)asynGet{ <span class="hljs-comment">// 1.URL</span> NSURL *url = [NSURL URLWithString:@<span class="hljs-string">"http://localhost:8080/MJServer/video"</span>]; <span class="hljs-comment">// 2.创建一个请求对象</span> ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; <span class="hljs-number">15</span><span class="hljs-comment">// 15秒后服务器还没有响应,就算超时</span> <span class="hljs-comment">// 设置代理</span> request.delegate = self; <span class="hljs-comment">// 3.开始请求</span> [request startAsynchronous]; self.request = request;}- (<span class="hljs-keyword">void</span>)dealloc{ <span class="hljs-comment">// 这句代码为了防止:控制器销毁了,request还回来调用控制器的代理方法,引发野指针</span> [self.request clearDelegatesAndCancel];}</code></pre></pre>Send a synchronous GET request<pre class="prettyprint"><code class=" hljs java"><span class="hljs-javadoc"><span class="hljs-javadoc">/** * Synchronous GET request</span> */</span>- (<span class="hljs-keyword"><span class="hljs-keyword">void</span></span>) synget{<span class="hljs-comment"><span class="hljs-comment">//1.URL</span></span>Nsurl *url = [nsurl urlwithstring:@<span class="hljs-string"><span class="hljs-string">"http://localhost:8080/Server/video"</span></span>];<span class="hljs-comment"><span class="hljs-comment">//2. Create a Request object</span></span>ASIHTTPRequest *request = [asihttprequest requestwithurl:url]; Request.timeoutseconds =<span class="hljs-number"><span class="hljs-number"></span> the</span>;<span class="hljs-comment"><span class="hljs-comment">///15 seconds after the server has not responded, even if timed out</span></span> <span class="hljs-comment"><span class="hljs-comment">//3. start the request (this line of code will card the master, waiting for the server to give the Data)</span></span>[request startsynchronous];<span class="hljs-comment"><span class="hljs-comment">//4. Request Complete</span></span>Nserror *error = [request error];<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>(error) {NSLog (@<span class="hljs-string"><span class="hljs-string">"request failed---%@"</span></span>, error); }<span class="hljs-keyword"><span class="hljs-keyword">Else</span></span>{nsdata *data = [request responsedata];<span class="hljs-comment"><span class="hljs-comment">//nsstring *str = [[nsstring alloc] initwithdata:data encoding:nsutf8stringencoding];</span></span> <span class="hljs-comment"><span class="hljs-comment">//nsstring *str = [request responsestring];</span></span>Nsdictionary *dict = [nsjsonserialization jsonobjectwithdata:data options:nsjsonreadingmutableleaves error:nil]; NSLog (@<span class="hljs-string"><span class="hljs-string">"request succeeded---%@"</span></span>, dict); }}</code></pre>Block request to listen for ASI<pre class="prettyprint"><code class=" hljs objectivec">Request to listen for ASI<span class="hljs-number"><span class="hljs-number">1.</span></span>Become an agent, abide by the Asihttprequestdelegate protocol, implement the Proxy method in the protocol request<span class="hljs-variable"><span class="hljs-variable">. Delegate</span></span>=<span class="hljs-keyword"><span class="hljs-keyword"></span> self</span>; - (<span class="hljs-keyword"><span class="hljs-keyword">void</span></span>) requeststarted: (asihttprequest *) request; - (<span class="hljs-keyword"><span class="hljs-keyword">void</span></span>Request: (asihttprequest *) Request Didreceiveresponseheaders: (<span class="hljs-built_in"><span class="hljs-built_in">nsdictionary</span></span>*) responseheaders; - (<span class="hljs-keyword"><span class="hljs-keyword">void</span></span>Request: (asihttprequest *) Request Didreceivedata: (nsdata *) data; - (<span class="hljs-keyword"><span class="hljs-keyword">void</span></span>) requestfinished: (asihttprequest *) request; - (<span class="hljs-keyword"><span class="hljs-keyword">void</span></span>) requestfailed: (asihttprequest *) request;<span class="hljs-number"><span class="hljs-number">2.</span></span>Become an agent, do not comply with the Asihttprequestdelegate protocol, Customize the Proxy method request<span class="hljs-variable"><span class="hljs-variable">. Delegate</span></span>=<span class="hljs-keyword"><span class="hljs-keyword"></span> self</span>; [request setdidstartselector:<span class="hljs-keyword"><span class="hljs-keyword">@selector</span></span>(start:)]; [request setdidfinishselector:<span class="hljs-keyword"><span class="hljs-keyword">@selector</span></span>(finish:)];<span class="hljs-number"><span class="hljs-number">3.</span></span>Set Block [request setstartedblock:^{<span class="hljs-built_in"><span class="hljs-built_in">NSLog</span></span>(@<span class="hljs-string"><span class="hljs-string">"setstartedblock"</span></span>); }]; [request setheadersreceivedblock:^ (<span class="hljs-built_in"><span class="hljs-built_in">nsdictionary</span></span>*responseheaders) {<span class="hljs-built_in"><span class="hljs-built_in">NSLog</span></span>(@<span class="hljs-string"><span class="hljs-string">"setheadersreceivedblock--%@"</span></span>, responseheaders); }]; [request setdatareceivedblock:^ (nsdata *data) {<span class="hljs-built_in"><span class="hljs-built_in">NSLog</span></span>(@<span class="hljs-string"><span class="hljs-string">"setdatareceivedblock--%@"</span></span>, data); }]; [request setcompletionblock:^{<span class="hljs-built_in"><span class="hljs-built_in">NSLog</span></span>(@<span class="hljs-string"><span class="hljs-string">"setcompletionblock"</span></span>); }]; [request setfailedblock:^{<span class="hljs-built_in"><span class="hljs-built_in">NSLog</span></span>(@<span class="hljs-string"><span class="hljs-string">"setfailedblock"</span></span>); }];</code></pre><pre class="prettyprint"><code class=" hljs objectivec">- (<span class="hljs-keyword"><span class="hljs-keyword">void</span></span>) viewdidload{[<span class="hljs-keyword"><span class="hljs-keyword">Super</span></span>viewdidload];<span class="hljs-comment"><span class="hljs-comment">additional setup after loading the view, typically from a nib.</span></span>}- (<span class="hljs-keyword"><span class="hljs-keyword">void</span></span>) touchesbegan: (nsset *) touches withevent: (uievent *) event{<span class="hljs-comment"><span class="hljs-comment">//1.URL</span></span> <span class="hljs-built_in"><span class="hljs-built_in">Nsurl</span></span>*url = [<span class="hljs-built_in"><span class="hljs-built_in">Nsurl</span></span>urlwithstring:@<span class="hljs-string"><span class="hljs-string">"http://localhost:8080/MJServer/video"</span></span>];<span class="hljs-comment"><span class="hljs-comment">//2. Create a Request object</span></span>ASIHTTPRequest *request = [asihttprequest requestwithurl:url];<span class="hljs-comment"><span class="hljs-comment">//3. start the request</span></span>[request startasynchronous];<span class="hljs-comment"><span class="hljs-comment">//4. Setting the Listening method</span></span>Request<span class="hljs-variable"><span class="hljs-variable">. Delegate</span></span>=<span class="hljs-keyword"><span class="hljs-keyword"></span> self</span>; [request setdidstartselector:<span class="hljs-keyword"><span class="hljs-keyword">@selector</span></span>(start:)]; [request setdidfinishselector:<span class="hljs-keyword"><span class="hljs-keyword">@selector</span></span>(finish:)];} - (<span class="hljs-keyword"><span class="hljs-keyword">void</span></span>) start: (asihttprequest *) request{<span class="hljs-built_in"><span class="hljs-built_in">NSLog</span></span>(@<span class="hljs-string"><span class="hljs-string">"start--%@"</span></span>, request);} - (<span class="hljs-keyword"><span class="hljs-keyword">void</span></span>) Finish: (asihttprequest *) Request {<span class="hljs-built_in"><span class="hljs-built_in">NSLog</span></span>(@<span class="hljs-string"><span class="hljs-string">"finish--%d%@%@"</span></span>, [request responsestatuscode], [request responsestatusmessage], [request responsedata]);} - (<span class="hljs-keyword"><span class="hljs-keyword">void</span></span>) asyncblock{<span class="hljs-comment"><span class="hljs-comment">//1.URL</span></span> <span class="hljs-built_in"><span class="hljs-built_in">Nsurl</span></span>*url = [<span class="hljs-built_in"><span class="hljs-built_in">Nsurl</span></span>urlwithstring:@<span class="hljs-string"><span class="hljs-string">"http://localhost:8080/Server/video"</span></span>];<span class="hljs-comment"><span class="hljs-comment">//2. Create a Request object</span></span>ASIHTTPRequest *request = [asihttprequest requestwithurl:url];<span class="hljs-comment"><span class="hljs-comment">if both block and proxy methods are set, the block and proxy methods are called during the request</span> ,</span> <span class="hljs-comment"><span class="hljs-comment">//general Invocation Order: Proxy method > block</span></span> <span class="hljs-comment"><span class="hljs-comment">//request.delegate = self;</span></span> <span class="hljs-comment"><span class="hljs-comment">//3. start the request</span></span>[request startasynchronous];<span class="hljs-comment"><span class="hljs-comment">//4. Set Block monitoring</span></span>[request setstartedblock:^{<span class="hljs-built_in"><span class="hljs-built_in">NSLog</span></span>(@<span class="hljs-string"><span class="hljs-string">"setstartedblock"</span></span>); }]; [request setheadersreceivedblock:^ (<span class="hljs-built_in"><span class="hljs-built_in">nsdictionary</span></span>*responseheaders) {<span class="hljs-built_in"><span class="hljs-built_in">NSLog</span></span>(@<span class="hljs-string"><span class="hljs-string">"setheadersreceivedblock--%@"</span></span>, responseheaders); }]; [request setdatareceivedblock:^ (nsdata *data) {<span class="hljs-built_in"><span class="hljs-built_in">NSLog</span></span>(@<span class="hljs-string"><span class="hljs-string">"setdatareceivedblock--%@"</span></span>, data); }]; [request setcompletionblock:^{<span class="hljs-built_in"><span class="hljs-built_in">NSLog</span></span>(@<span class="hljs-string"><span class="hljs-string">"setcompletionblock"</span></span>); }]; [request setfailedblock:^{<span class="hljs-built_in"><span class="hljs-built_in">NSLog</span></span>(@<span class="hljs-string"><span class="hljs-string">"setfailedblock"</span></span>); }];}</code></pre>File download<pre class="prettyprint"><code class=" hljs objectivec"><span class="hljs-preprocessor"><span class="hljs-preprocessor">#import <span class="hljs-title">"ViewController.h"</span> </span></span><span class="hljs-preprocessor"><span class="hljs-preprocessor">#import <span class="hljs-title">"ASIHTTPRequest.h"</span> </span></span><span class="hljs-class"><span class="hljs-class"> <span class="hljs-keyword">@interface</span> <span class="hljs-title">hmviewcontroller</span> ()//<<span class="hljs-title">asiprogressdelegate</span>></span></span><span class="hljs-keyword"><span class="hljs-keyword">@property</span></span>(<span class="hljs-keyword"><span class="hljs-keyword">Weak</span></span>,<span class="hljs-keyword"><span class="hljs-keyword">nonatomic</span></span>)<span class="hljs-keyword"><span class="hljs-keyword">Iboutlet</span></span>Uiprogressview *progressview;<span class="hljs-keyword"><span class="hljs-keyword">@property</span></span>(<span class="hljs-keyword"><span class="hljs-keyword">nonatomic</span></span>,<span class="hljs-keyword"><span class="hljs-keyword">Assign</span></span>)<span class="hljs-built_in"><span class="hljs-built_in">BOOL</span></span>downloading;<span class="hljs-keyword"><span class="hljs-keyword">@property</span></span>(<span class="hljs-keyword"><span class="hljs-keyword">nonatomic</span></span>,<span class="hljs-keyword"><span class="hljs-keyword">Strong</span></span>) ASIHTTPRequest *request;<span class="hljs-keyword"><span class="hljs-keyword">@end</span></span><span class="hljs-class"><span class="hljs-class"> <span class="hljs-keyword">@implementation</span> <span class="hljs-title">hmviewcontroller</span> </span></span>- (<span class="hljs-keyword"><span class="hljs-keyword">void</span></span>) viewdidload{[<span class="hljs-keyword"><span class="hljs-keyword">Super</span></span>viewdidload];<span class="hljs-comment"><span class="hljs-comment">additional setup after loading the view, typically from a nib.</span></span>}- (<span class="hljs-keyword"><span class="hljs-keyword">void</span></span>) touchesbegan: (nsset *) touches withevent: (uievent *) event{[<span class="hljs-keyword"><span class="hljs-keyword"></span> self</span>download];} - (<span class="hljs-keyword"><span class="hljs-keyword">void</span></span>) download{<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>(<span class="hljs-keyword"><span class="hljs-keyword"></span> self</span><span class="hljs-variable"><span class="hljs-variable">. Downloading</span></span>) { [<span class="hljs-keyword"><span class="hljs-keyword"></span> self</span><span class="hljs-variable"><span class="hljs-variable">. Request</span></span>cleardelegatesandcancel];<span class="hljs-keyword"><span class="hljs-keyword"></span> self</span><span class="hljs-variable"><span class="hljs-variable">. Downloading</span></span>=<span class="hljs-literal"><span class="hljs-literal">NO</span></span>; }<span class="hljs-keyword"><span class="hljs-keyword">Else</span></span>{<span class="hljs-comment"><span class="hljs-comment">//1.URL</span></span> <span class="hljs-built_in"><span class="hljs-built_in">Nsurl</span></span>*url = [<span class="hljs-built_in"><span class="hljs-built_in">Nsurl</span></span>urlwithstring:@<span class="hljs-string"><span class="hljs-string">"http://localhost:8080/Server/resources/test.mp4"</span></span>];<span class="hljs-comment"><span class="hljs-comment">//2. Create a Request object</span></span>ASIHTTPRequest *request = [asihttprequest requestwithurl:url];<span class="hljs-comment"><span class="hljs-comment">//3. Set the cache path for the file</span></span> <span class="hljs-built_in"><span class="hljs-built_in">NSString</span></span>*caches = [nssearchpathfordirectoriesindomains (nscachesdirectory, nsuserdomainmask,<span class="hljs-literal"><span class="hljs-literal">YES</span></span>) lastobject];<span class="hljs-built_in"><span class="hljs-built_in">NSString</span></span>*filepath = [caches stringbyappendingpathcomponent:@<span class="hljs-string"><span class="hljs-string">"test.mp4"</span></span>]; Request<span class="hljs-variable"><span class="hljs-variable">. Downloaddestinationpath</span></span>= filepath;<span class="hljs-comment"><span class="hljs-comment">//4. set the agent for progress monitoring (to be a progress monitoring agent, it is best to abide by the asiprogressdelegate Protocol)</span></span>Request<span class="hljs-variable"><span class="hljs-variable">. Downloadprogressdelegate</span></span>=<span class="hljs-keyword"><span class="hljs-keyword"></span> self</span><span class="hljs-variable"><span class="hljs-variable">. Progressview</span></span>;<span class="hljs-comment"><span class="hljs-comment">//this property is set to Yes to support breakpoint download</span></span>Request<span class="hljs-variable"><span class="hljs-variable">. Allowresumeforfiledownloads</span></span>=<span class="hljs-literal"><span class="hljs-literal">YES</span></span>;<span class="hljs-comment"><span class="hljs-comment">//if you want to implement a breakpoint continuation, you need to set a temporary path to the file</span></span>Request<span class="hljs-variable"><span class="hljs-variable">. Temporaryfiledownloadpath</span></span>= [nstemporarydirectory () stringbyappendingpathcomponent:@<span class="hljs-string"><span class="hljs-string">"test.temp"</span></span>];<span class="hljs-comment"><span class="hljs-comment">//5. start the request</span></span>[request startasynchronous];<span class="hljs-keyword"><span class="hljs-keyword"></span> self</span><span class="hljs-variable"><span class="hljs-variable">. Request</span></span>= request;<span class="hljs-keyword"><span class="hljs-keyword"></span> self</span><span class="hljs-variable"><span class="hljs-variable">. Downloading</span></span>=<span class="hljs-literal"><span class="hljs-literal">YES</span></span>; }}- (<span class="hljs-keyword"><span class="hljs-keyword">void</span></span>) Setprogress: (<span class="hljs-keyword"><span class="hljs-keyword">float</span></span>) newprogress{<span class="hljs-comment"><span class="hljs-comment">//NSLog (@ "download progress--%f", newprogress);</span></span> <span class="hljs-keyword"><span class="hljs-keyword"></span> self</span><span class="hljs-variable"><span class="hljs-variable">. Progressview</span></span><span class="hljs-variable"><span class="hljs-variable">. Progress</span></span>= newprogress;}<span class="hljs-keyword"><span class="hljs-keyword">@end</span></span></code></pre>File Upload<pre class="prettyprint"><code class=" hljs objectivec"><span class="hljs-preprocessor"><span class="hljs-preprocessor">#import <span class="hljs-title">"ViewController.h"</span> </span></span><span class="hljs-preprocessor"><span class="hljs-preprocessor">#import <span class="hljs-title">"ASIFormDataRequest.h"</span> </span></span><span class="hljs-preprocessor"><span class="hljs-preprocessor">#import <span class="hljs-title">"ASINetworkQueue.h"</span> </span></span><span class="hljs-class"><span class="hljs-class"> <span class="hljs-keyword">@interface</span> <span class="hljs-title">hmviewcontroller</span> ()</span></span><span class="hljs-keyword"><span class="hljs-keyword">@property</span></span>(<span class="hljs-keyword"><span class="hljs-keyword">Weak</span></span>,<span class="hljs-keyword"><span class="hljs-keyword">nonatomic</span></span>)<span class="hljs-keyword"><span class="hljs-keyword">Iboutlet</span></span>Uiprogressview *progressview;<span class="hljs-keyword"><span class="hljs-keyword">@end</span></span><span class="hljs-class"><span class="hljs-class"> <span class="hljs-keyword">@implementation</span> <span class="hljs-title">hmviewcontroller</span> </span></span>- (<span class="hljs-keyword"><span class="hljs-keyword">void</span></span>) viewdidload{[<span class="hljs-keyword"><span class="hljs-keyword">Super</span></span>viewdidload];<span class="hljs-comment"><span class="hljs-comment">//asinetworkqueue *queue = [asinetworkqueue queue];</span></span><span class="hljs-comment"><span class="hljs-comment">//queue.shouldcancelallrequestsonfailure = YES;</span></span>}- (<span class="hljs-keyword"><span class="hljs-keyword">void</span></span>) touchesbegan: (nsset *) touches withevent: (uievent *) event{<span class="hljs-comment"><span class="hljs-comment">//1.URL</span></span> <span class="hljs-built_in"><span class="hljs-built_in">Nsurl</span></span>*url = [<span class="hljs-built_in"><span class="hljs-built_in">Nsurl</span></span>urlwithstring:@<span class="hljs-string"><span class="hljs-string">"http://localhost:8080/Server/upload"</span></span>];<span class="hljs-comment"><span class="hljs-comment">//2. Create a Request object</span></span>Asiformdatarequest *request = [asiformdatarequest requestwithurl:url];<span class="hljs-comment"><span class="hljs-comment">//3. Set Request Parameters</span></span>[request setpostvalue:@<span class="hljs-string"><span class="hljs-string">"zhangsan"</span></span>forkey:@<span class="hljs-string"><span class="hljs-string">"username"</span></span>]; [request setpostvalue:@<span class="hljs-string"><span class="hljs-string">"123"</span></span>forkey:@<span class="hljs-string"><span class="hljs-string">"pwd"</span></span>]; [request setpostvalue:@<span class="hljs-string"><span class="hljs-string">"</span> "</span>forkey:@<span class="hljs-string"><span class="hljs-string">"age"</span></span>]; [request setpostvalue:@<span class="hljs-string"><span class="hljs-string">"1.89"</span></span>forkey:@<span class="hljs-string"><span class="hljs-string">"height"</span></span>];<span class="hljs-comment"><span class="hljs-comment">//set file Parameters</span></span> <span class="hljs-built_in"><span class="hljs-built_in">NSString</span></span>*file = [[<span class="hljs-built_in"><span class="hljs-built_in">NSBundle</span></span>mainbundle] pathforresource:@<span class="hljs-string"><span class="hljs-string">"test"</span></span>oftype:@<span class="hljs-string"><span class="hljs-string">"mp4"</span></span>];<span class="hljs-comment"><span class="hljs-comment">//if you know the file path, it's best to use this method (because it's Simple)</span></span> <span class="hljs-comment"><span class="hljs-comment">//asi will automatically identify files within the MimeType</span></span>[request Setfile:file forkey:@<span class="hljs-string"><span class="hljs-string">"file"</span></span>]; [request Setfile:file withfilename:@<span class="hljs-string"><span class="hljs-string">"basic.pptx"</span></span>andcontenttype:@<span class="hljs-string"><span class="hljs-string">"application/vnd.openxmlformats-officedocument.presentationml.presentation"</span></span>forkey:@<span class="hljs-string"><span class="hljs-string">"file"</span></span>];<span class="hljs-comment"><span class="hljs-comment">//if the file data is generated dynamically, use this method (such as the image data obtained after the photo was Taken)</span></span><span class="hljs-comment"><span class="hljs-comment">//[request setdata:<# (id) #> withfilename:<# (nsstring *) #> andcontenttype:<# (nsstring *) #> forkey:<# (nsstring *) #>];</span></span> <span class="hljs-comment"><span class="hljs-comment">//4. Set the agent to monitor upload progress</span></span>Request<span class="hljs-variable"><span class="hljs-variable">. Uploadprogressdelegate</span></span>=<span class="hljs-keyword"><span class="hljs-keyword"></span> self</span><span class="hljs-variable"><span class="hljs-variable">. Progressview</span></span>;<span class="hljs-comment"><span class="hljs-comment">//5. start the request</span></span>[request startasynchronous];<span class="hljs-comment"><span class="hljs-comment">//6. Monitoring Complete</span></span>__<span class="hljs-keyword"><span class="hljs-keyword">Weak</span></span>typeof (request) Weakrequest = request; [request setcompletionblock:^{<span class="hljs-built_in"><span class="hljs-built_in">NSLog</span></span>(@<span class="hljs-string"><span class="hljs-string">"%@"</span></span>, [weakrequest responsestring]); }];}<span class="hljs-keyword"><span class="hljs-keyword">@end</span></span></code></pre> <p><p>iOS development-"ASI" usage examples</p></p></span>