How can i post json string to server

前端 未结 4 1793
清歌不尽
清歌不尽 2020-12-16 08:22

This is json string that I have to post...

{
    \"data\": {
        \"description\": \"\",
        \"current_value\": \"\",
        \"serialno\": \"\",
            


        
4条回答
  •  执笔经年
    2020-12-16 08:58

    Surely this Q us a duplicate, but here's full example code, as one long routine. Just copy and paste.

    First set up the JSON...

    -(void)sendTestJsonCommand
        {
        NSMutableDictionary *dict = @{
            @"heights":@"4_5_7",
            @"score":@"4",
            @"title":@"Some Title",
            @"textBody":@"Some Long Text",
            @"happy":@"y"
            }.mutableCopy;
    
        NSError *serr;
    
        NSData *jsonData = [NSJSONSerialization
            dataWithJSONObject:dict options:NSJSONWritingPrettyPrinted error:&serr];
    
        if (serr)
            {
            NSLog(@"Error generating json data for send dictionary...");
            NSLog(@"Error (%@), error: %@", dict, serr);
            return;
            }
    
        NSLog(@"Successfully generated JSON for send dictionary");
        NSLog(@"now sending this dictionary...\n%@\n\n\n", dict);
    

    Next, correctly asynchronously send the command and json to your server...

    #define appService [NSURL \
      URLWithString:@"http://www.corp.com/apps/function/user/pass/id/etc"]
    
        // Create request object
        NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:appService];
    
        // Set method, body & content-type
        request.HTTPMethod = @"POST";
        request.HTTPBody = jsonData;
        [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
        [request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
    
        [request setValue:
            [NSString stringWithFormat:@"%lu",
            (unsigned long)[jsonData length]] forHTTPHeaderField:@"Content-Length"];
    
        // you would almost certainly use MBProgressHUD at this point
        // to display some sort of spinner or similar action on the UX
    

    Finally, (A) connect correctly using NSURLConnection, and (B) correctly interpret the information which comes back to you from your server.

        [NSURLConnection sendAsynchronousRequest:request
            queue:[NSOperationQueue mainQueue]
            completionHandler:^(NSURLResponse *r, NSData *data, NSError *error)
            {
    
            if (!data)
                {
                NSLog(@"No data returned from server, error ocurred: %@", error);
                NSString *userErrorText = [NSString stringWithFormat:
                   @"Error communicating with server: %@", error.localizedDescription]
                return;
                }
    
            NSLog(@"got the NSData fine. here it is...\n%@\n", data);
            NSLog(@"next step, deserialising");
    
            NSError *deserr;
            NSDictionary *responseDict = [NSJSONSerialization
                                          JSONObjectWithData:data
                                          options:kNilOptions
                                          error:&deserr];
    
            NSLog(@"so, here's the responseDict\n\n\n%@\n\n\n", responseDict);
    
            // LOOK at that output on your console to learn how to parse it.
            // to get individual values example blah = responseDict[@"fieldName"];
            }];
    
        }
    

    Hope it saves someone some typing!

提交回复
热议问题