2016-08-09 47 views
0

In meiner App muss ich Daten auf dem Server veröffentlichen und Antwort erhalten. Aber ich bekomme null Wert nach dem Posten von Daten. Unten ist mein voller Code. Danke im Voraus.Wie man ein Objekt postet und eine Antwort in ios erhält

{ 
     NSString *post =[[NSString alloc] initWithFormat:@"%@%@%@%@%@",[self.username_reg text],[self.emailid_reg text],[self.phone_reg text],[self.password_reg text],[self.confirmpassword_reg text]]; 
     NSLog(@"PostData: %@",post); 
     NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; 
     NSURL *url=[NSURL URLWithString:@"https://servlet/URL"]; 

     NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]; 

     NSString *postLength = [NSString stringWithFormat:@"%lu", (unsigned long)[postData length]]; 


     [request setURL:url]; 
     [request setHTTPMethod:@"POST"]; 
     [request setValue:postLength forHTTPHeaderField:@"Content-Length"]; 
     [request setValue:@"application/json" forHTTPHeaderField:@"Accept"]; 
     [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; 


    NSMutableDictionary *postDict = [[NSMutableDictionary alloc] init]; 
    [postDict setValue:_username_reg.text forKey:@"UserName"]; 
    [postDict setValue:_emailid_reg.text forKey:@"Email"]; 
    [postDict setValue:_phone_reg.text forKey:@"Phone"]; 
    [postDict setValue:_password_reg.text forKey:@"Pass"]; 
    [postDict setValue:_confirmpassword_reg.text forKey:@"ConPass"]; 


    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:postDict options:0 error:nil]; 

    // Checking the format 
    NSString *urlString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; 


    // Convert your data and set your request's HTTPBody property 
    NSString *stringData = [[NSString alloc] initWithFormat:@"jsonRequest=%@", urlString]; 
    NSData *requestBodyData = [stringData dataUsingEncoding:NSUTF8StringEncoding]; 

    request.HTTPBody = requestBodyData; 

     NSLog(@"bcbc:%@",requestBodyData); 
     [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) 
     { 
      NSString* newStr = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; 
      NSLog(@"new:%@",newStr); 
      NSError *error; 
      NSDictionary *json_Dict = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error]; 
        NSLog(@"%@",json_Dict); 
     }]; 

    } 

Der Antrag angegebenen Format ist:

{"UserName":"sony","Email":"[email protected]","Phone":"7358700457","Pass":"sony88","ConPass":"sony88"} 

Die Antwort erhalten müssen:

{"responseHeader":{"responseCode":0,"responseMessage":"Success"}} 
+0

Wie wäre es AFNetworking mit? Es ist vielleicht nicht die Antwort auf Ihre Frage. Aber es ist sehr einfach für Netzwerkzwecke zu verwenden, das Beste! –

+0

können Sie erklären, wie Sie AFNetworking verwenden – Vignesh

+0

[AFNetworking] (https://github.com/AFNetworking/AFNetworking): Überprüfen Sie die Beispiele. –

Antwort

2

Versuchen Sie diesen Code:

NSData* jsonData = [NSJSONSerialization dataWithJSONObject:@"your dictionary name" options:NSJSONWritingPrettyPrinted error:&error]; 

NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; 
NSLog(@"jsonString: %@", jsonString); 

NSData *requestData = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; 

NSMutableData *body = [NSMutableData data]; 
[body appendData:requestData]; 

NSString *postLength = [NSString stringWithFormat:@"%lu", (unsigned long)[body length]]; 

NSURL *url = [NSURL URLWithString:@"your url"]; 
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url]; 
[request setHTTPMethod:@"POST"]; 
[request setHTTPShouldHandleCookies:NO]; 

[request setValue:@"application/json" forHTTPHeaderField:@"Content-type"]; 

[request setValue:postLength forHTTPHeaderField:@"Content-Length"]; 
[request setHTTPBody:body]; 

NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]]; 
[[session dataTaskWithRequest:request 
      completionHandler:^(NSData *data, 
           NSURLResponse *response, 
           NSError *error) 
    { 
     if (error) { 
      failure(error); 
     } else { 
      NSDictionary * jsonDic =[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil]; 
     NSLog(@"%@",jsonDic); 
      if ([jsonDic objectForKey:@"error"]) { 

      } 
      else{ 

      } 

     } 
    }] resume];