1 //2 //VIEWCONTROLLER.M3 //ios_0129_http Request4 //5 //Created by Ma C on 16/1/29.6 //copyright©2016 Blog Technology. All rights reserved.7 //8 9 #import "ViewController.h"Ten #import "mbprogresshud+mj.h" One A @interfaceViewcontroller () -@property (Weak, nonatomic) Iboutlet Uitextfield *Textname; -@property (Weak, nonatomic) Iboutlet Uitextfield *Textpassword; the --(ibaction) btnlogin; - - @end + - @implementationViewcontroller + /* A 1. Common scenarios for sending HTTP requests: at 1> Apple-native - nsurlconnection: Simple to use, most classic, most direct - nsurlsession: More powerful than nsurlconnection - Cfnetwork:nsurl Bottom, pure C language - 2> Third party framework - asihttprequest: "http Terminator", feature and powerful, unfortunately stop updating in afnetworking: Simple to use, provide basic enough common functions, maintainers more - Mknetworkkit: Easy to use, less user-friendly maintainers to 3> Recommendations + in order to improve development efficiency, enterprise development is basically a third-party framework - the 2. Common Classes * 1>nsurl: Request Address $ 2>nsurlrequest: A Nsurlrequest object represents a request-the included information is:Panax Notoginseng A . A Nsurl object - B. Request method, request header, request body the c. Request timed out + 3>nsmutableurlrequest: A 4>nsurlconnection-Responsible for sending requests, establishing client-server connections the send nsurlrequest data to the server and receive data from the server response + - 3.NSURLConnection Use steps: $ 1> Creating the Nsurl object and setting the request path $ 2> a Nsurl object to create a Nsurlrequest object, set the request header and the request body - 3> using nsurlconnection to send Nsurlrequest - */ the -- (void) Viewdidload {Wuyi [Super Viewdidload]; the -Self.view.backgroundColor =[Uicolor Grouptableviewbackgroundcolor]; Wu } -- (void) Touchesbegan: (Nsset<uitouch *> *) touches withevent: (Uievent *)Event About { $ [Self.view Endediting:yes]; - } - - A-(ibaction) btnlogin { + theNSString *usernametext =Self.textName.text; - if(Usernametext.length = =0) { $[Mbprogresshud ShowError:@"Please enter your account number"]; the return; the } theSelf.textPassword.secureTextEntry =YES; theNSString *password =Self.textPassword.text; - if(Password.length = =0) { in[Mbprogresshud ShowError:@"Please enter your password"]; the return; the } AboutNSLog (@"sending data to the server"); the the /* the Interface Documentation: Define a request interface that describes the server side + 1> request path URL: Which path should the client request - 2> Request Parameters: The data that the client wants to send to the server the 3> Request Result: What the server is going to return to the clientBayi */ the the //Create a Nsurl: request path -NSString *strurl = [NSString stringWithFormat:@"http://localhost:8080/mjserver/login?username=%@&pwd=%@", Usernametext,password]; -Nsurl *url =[Nsurl Urlwithstring:strurl]; the //Create a request theNsurlrequest *request =[Nsurlrequest Requestwithurl:url]; the the //Sync Request - [self sendsyncwithrequest:request]; the //Asynchronous Request the [self sendasyncwithrequest:request]; the 94 } the //Asynchronous Request the- (void) Sendasyncwithrequest: (Nsurlrequest *) Request the {98Nsoperationqueue *queue =[Nsoperationqueue Mainqueue]; About -[Nsurlconnection sendasynchronousrequest:request queue:queue completionhandler:^ (NSURLResponse * _Nullable response, NSData * _nullable data, Nserror *_nullable Connectionerror) {101 //this block will be automatically called when the request is complete.102 if(Connectionerror | | data = =Nil) {103[Mbprogresshud ShowError:@"request failed"];104 return; the }106 //parse the JSON data returned by the server107Nsdictionary *dict =[nsjsonserialization jsonobjectwithdata:data options:nsjsonreadingmutableleaves Error:nil];108NSString *error = dict[@"Error"];109 if(Error) { the [Mbprogresshud Showerror:error];111 } the Else{113NSString *success = dict[@"Success"]; the [Mbprogresshud showsuccess:success]; the } the }];117 }118 119 //Sync Request -- (void) Sendsyncwithrequest: (Nsurlrequest *) Request121 {122 //send user name and password to server (HTTP protocol)123NSData *data =[nsurlconnection sendsynchronousrequest:request returningresponse:nil Error:nil];124 /* the JSON126 1>json is a lightweight data format that is typically used for data interaction127 the data returned to the client by the server is generally in JSON format or XML format - Standard JSON appropriate NOTE: Key must be enclosed in double quotation marks.129 the 2> to dig out specific data from JSON to parse the JSON131 JSON OC the {}-----------nsdictonary133 []-----------Nsarray134 ""-----------nsstring135 Digital-----------NSNumber136 137 3>json Parsing Solution138 third-party frameworks: Jsonkit, Sbjson, Touchjson (performance from left to right, worse)139 Apple Native (comes with): Nsjsonserialization (Best performance) $ 4>json data to-->oc object141 + (Nullable ID) Jsonobjectwithdata: (NSData *) Data options: (nsjsonreadingoptions) opt error: (Nserror *) error;142 5>oc Object-->json data143 + (Nullable NSData *) Datawithjsonobject: (ID) obj options: (nsjsonwritingoptions) opt error: (NSERROR *) error;144 */145 //parse the JSON data returned by the server146Nsdictionary *dict =[nsjsonserialization jsonobjectwithdata:data options:nsjsonreadingmutableleaves Error:nil];147NSString *error = dict[@"Error"];148 if(Error) {149 [Mbprogresshud Showerror:error]; Max }151 Else{ theNSString *success = dict[@"Success"];153 [Mbprogresshud showsuccess:success];154 }155 156 }157 @end
IOS-Network (HTTP requests, synchronization requests, asynchronous requests, JSON parsing data)