//
Ykshttpsrequest.m
Yksharesdkdemo
//
Created by Qingyun on 22/05/2017.
copyright©2017 Qingjoin. All rights reserved.
//
#import "YKSHttpsRequest.h"
@implementation Ykshttpsrequest
+ (Ykshttpsrequest *) requestwithstring: (NSString *) urlstring {
return [[Ykshttpsrequest alloc] initwithurlstring:urlstring];
}
-(ID) initwithurlstring: (NSString *) urlstring {
if (self = [super init]) {
Transcoding into UTF8
URLString = [URLString stringbyaddingpercentescapesusingencoding:nsutf8stringencoding];
url = [Nsurl urlwithstring:urlstring];
NSLog (@ "httpurl:%@", url);
request = [Nsurlrequest Requestwithurl:url];
}
return self;
}
-(void) Start
{
2. Create a Request object
3. Create session
if (!request)
{
NSLog (@ "Requestnull");
}
Nsurlsession *session = [Nsurlsession sessionwithconfiguration:[nsurlsessionconfiguration Defaultsessionconfiguration] delegate:self delegatequeue:[nsoperationqueue Mainqueue]];
Nsurlsessiondatatask *datatask = [Session datataskwithrequest:request completionhandler:^ (NSData * _Nullable data, Nsurlresponse * _nullable response, Nserror * _nullable error) {
if (Error) {
NSLog (@ "nsurlsessiondatataskerror:%@", error);
} else {
Nsdictionary *dic = [nsjsonserialization jsonobjectwithdata:data options:nsjsonreadingmutablecontainers Error:nil];
NSLog (@ "nsurlsessiondatataskdic:%@", DIC);
}
5. Parsing data
NSLog (@ "nsurlsessiondatatask:%@", [[NSString Alloc]initwithdata:data encoding:nsutf8stringencoding]);
}];
4. Execute task
[Datatask resume];
Http://www.jianshu.com/p/8ff7269f2eff
}
POST request
+ (void) postwithurlstring: (nsstring *) URL parameters: (ID) parameters
{
Nsurl *nsurl = [Nsurl Urlwithstring:url];
Nsmutableurlrequest *request = [Nsmutableurlrequest Requestwithurl:nsurl];
Set Request mode
Request. HttpMethod = @ "POST";
NSString *poststr = [Ykshttpsrequest parseparams:parameters];
Set the request body
Request. Httpbody = [Poststr datausingencoding:nsutf8stringencoding];
Nsoperationqueue *queue = [[Nsoperationqueue alloc] init];
Nsurlsessionconfiguration *config = [Nsurlsessionconfiguration defaultsessionconfiguration];
Nsurlsession *session = [nsurlsession sessionwithconfiguration:config delegate:self DelegateQueue:queue];
Nsurlsessiondatatask *datatask = [Session datataskwithrequest:request completionhandler:^ (NSData * _Nullable data, Nsurlresponse * _nullable response, Nserror * _nullable error) {
if (Error) {
Failureblock (Error);
} else {
Nsdictionary *dic = [nsjsonserialization jsonobjectwithdata:data options:nsjsonreadingmutablecontainers Error:nil];
Successblock (DIC);
NSLog (@ "nsurlsessiondatataskdic:%@", DIC);
}
}];
[Datatask resume];
}
Parse the nsdictionary into the NSString string in post format
+ (NSString *) Parseparams: (Nsdictionary *) params
{
NSString *keyvalueformat;
nsmutablestring *result = [nsmutablestring new];
Nsmutablearray *array = [Nsmutablearray new];
Instantiate a key enumerator to hold the dictionary key
Nsenumerator *keyenum = [params keyenumerator];
ID key;
while (key = [Keyenum Nextobject]) {
Keyvalueformat = [NSString stringwithformat:@ "%@=%@&", key, [params valueforkey:key]];
[Result Appendstring:keyvalueformat];
[Array Addobject:keyvalueformat];
}
return result;
}
-(void) Urlsession: (Nsurlsession *) session Task: (Nsurlsessiontask *) Task Didreceivechallenge: ( Nsurlauthenticationchallenge *) Challenge Completionhandler: (void (^) (nsurlsessionauthchallengedisposition, Nsurlcredential * _nullable)) Completionhandler
{
NSLog (@ "urlsession:%@", challenge.protectionspace);
if (![ Challenge.protectionSpace.authenticationMethod isequaltostring:@ "Nsurlauthenticationmethodservertrust"])
Return
If you are requesting a certificate trust, we'll deal with it, and the rest will not be processed.
if ([Challenge.protectionSpace.authenticationMethod isequaltostring:nsurlauthenticationmethodservertrust])
{
Nsurlcredential *cre = [nsurlcredential credentialForTrust:challenge.protectionSpace.serverTrust];
Call Block
Completionhandler (Nsurlsessionauthchallengeusecredential,cre);
Sectrustref servertrust = challenge.protectionSpace.serverTrust;
Completionhandler (nsurlsessionauthchallengeusecredential, [nsurlcredential credentialfortrust:servertrust]);
} else
{
Completionhandler (nsurlsessionauthchallengeperformdefaulthandling, nil);
}
/*
Nsurlsessionauthchallengeusecredential Using certificates
Nsurlsessionauthchallengeperformdefaulthandling ignoring the default practice of certificates
Nsurlsessionauthchallengecancelauthenticationchallenge Cancel request, ignore certificate
Nsurlsessionauthchallengerejectprotectionspace deny, ignore certificate
*/
Nsurlcredential *credential = [nsurlcredential credentialForTrust:challenge.protectionSpace.serverTrust];
Completionhandler (nsurlsessionauthchallengeusecredential,credential);
}
-(void) Urlsession: (Nsurlsession *) session Datatask: (Nsurlsessiondatatask *) datatask didreceivedata: (NSData *) Data {
NSLog (@ "urlsessionxxxx%@", [[NSString Alloc]initwithdata:data encoding:nsutf8stringencoding]);
}
@end
IOS HTTPS Request Nsurlsessiondatatask