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 /* at - 1. Methods for sending HTTP requests - 1> defines 8 ways to send HTTP requests in the HTTP/1.1 protocol - Get,post,options,head,put,delete,trace,connect,patch - 2> According to the HTTP protocol design, different methods of resources have different ways of Operation - PUT: Increase in Delete: Delete - POST: Change to GET: Check + 3> most commonly used is the get,post (in fact Get,post can do to delete and change) - 4> Parameters-specific data passed to the server the * 2.GET and post comparison $ 1>get and Post are mainly embodied in the data transmissionPanax Notoginseng a.get The parameter sent to the server after the request URL, with & separated by multiple parameters - the parameters behind the B.url cannot exceed 1KB the + c.post The parameters sent to the server are all placed in the request body A d. Theoretically, there is no limit to the amount of data delivered by post (see Server processing Power) the + 3.GET and post selection - 1> Pass large amounts of data only with post (file upload) $ 2>get security is worse than post, confidential information with post $ 3> is simply to request data (data query) with Get - 4> If it is to delete and change the data, it is recommended to use post - the 4.HTTP Communication Process-Request - The 1>http protocol stipulates that a complete HTTP request sent by the client to the server contains the following contentWuyi A. Request line: Contains the request method, the request resource path, the HTTP version protocol the B. Request header: Contains the environment description of the client, the host address of the client request, etc. - Host : The address of the server that the client wants to access Wu user-agent: Client type, client-side software Environment - Accept: The type of data that the client can receive About Accept-language: The language environment of the client $ accept-encoding: The data compression format supported by the client - c. Request body: Specific data sent by the client to the server - - 5.HTTP Communication Process-response A 1> The client sends a request to the server, the server should respond by returning the data to the client + The 2>http protocol stipulates that a complete HTTP response should contain the following content the A. Status line: Contains the HTTP protocol version, status code, status English name - B. Response header: Contains a description of the server, a description of the returned data $ Server : Types of servers the Content-type: The data type returned the Content-length: The length of the returned data the Date: Time of response the 3> Entity content: Specific data returned by the server to the client - 4> Common response status codes: in */ the the- (void) Viewdidload { About [Super Viewdidload]; the theSelf.view.backgroundColor =[Uicolor Grouptableviewbackgroundcolor]; the } + -- (void) Touchesbegan: (Nsset<uitouch *> *) touches withevent: (Uievent *)Event the {Bayi [Self.view Endediting:yes]; the } the --(ibaction) btnlogin { - theNSString *usernametext =Self.textName.text; the if(Usernametext.length = =0) { the[Mbprogresshud ShowError:@"Please enter your account number"]; the return; - } theSelf.textPassword.secureTextEntry =YES; theNSString *password =Self.textPassword.text; the if(Password.length = =0) {94[Mbprogresshud ShowError:@"Please enter your password"]; the return; the } the //1.GET Request Default98 // //Create a Nsurl: request path About //nsstring *strurl = [NSString stringwithformat:@]http://localhost: 8080/mjserver/login?username=%@&pwd=%@ ", Usernametext,password]; - 101 // //Nsurl can not contain Chinese, you have to transcode the Chinese102 //strURL = [strURL stringbyaddingpercentescapesusingencoding:nsutf8stringencoding];103 104 //Nsurl *url = [Nsurl Urlwithstring:strurl]; the // //Create a request106 //nsurlrequest *request = [Nsurlrequest requestwithurl:url];107 108 //Add Mask109[Mbprogresshud ShowMessage:@"being desperately loading ..."]; the 111 //2.POST Request theNSString *strurl =@"Http://localhost:8080/MJServer/login";113Nsurl *url =[Nsurl Urlwithstring:strurl]; theNsmutableurlrequest *request =[Nsmutableurlrequest Requestwithurl:url]; the the //Request Timeout after 5s (default 60s timeout)117Request.timeoutinterval =5;118 //Set Request Mode119Request. HttpMethod =@"POST"; - //set the request header121[Request SetValue:@"IPhone6"Forhttpheaderfield:@"user-agent"];122 123 //set the request body124NSString *param = [NSString stringWithFormat:@"username=%@&pwd=%@", Usernametext,password]; the //NSString-NSData126Request. Httpbody =[param datausingencoding:nsutf8stringencoding];127 - //Asynchronous Request129 [self sendasyncwithrequest:request]; the 131 } the //Asynchronous Request133- (void) Sendasyncwithrequest: (Nsurlrequest *) Request134 {135Nsoperationqueue *queue =[Nsoperationqueue Mainqueue];136 137[Nsurlconnection sendasynchronousrequest:request queue:queue completionhandler:^ (NSURLResponse * _Nullable response, NSData * _nullable data, Nserror *_nullable Connectionerror) {138 139 //Hide Masks $ [Mbprogresshud Hidehud];141Nshttpurlresponse *RESP = (Nshttpurlresponse *) response;142NSString *msg =[Nshttpurlresponse LocalizedStringForStatusCode:resp.statusCode];143NSLog (@"%ld%@%@", Resp.statuscode, MSG, resp.allheaderfields);144 145 //this block will be automatically called when the request is complete.146 if(Connectionerror | | data = =Nil) {147[Mbprogresshud ShowError:@"request failed"];148 return;149 } Max //parse the JSON data returned by the server151Nsdictionary *dict =[nsjsonserialization jsonobjectwithdata:data options:nsjsonreadingmutableleaves Error:nil]; theNSString *error = dict[@"Error"];153 if(Error) {154 [Mbprogresshud Showerror:error];155 }156 Else{157NSString *success = dict[@"Success"];158 [Mbprogresshud showsuccess:success];159 } the }];161 }162 163 @end
ios-Network (GET request and POST request, HTTP communication process, request timeout, url transcoding)