[objective-c] Come inviare la richiesta POST e GET?



Answers

Usando RestKit puoi fare una semplice richiesta POST (vedi questa pagina GitHub per maggiori dettagli).

Importa RestKit nel tuo file di intestazione.

#import <RestKit/RestKit.h>

Quindi puoi iniziare creando un nuovo RKRequest .

RKRequest *MyRequest = [[RKRequest alloc] initWithURL:[[NSURL alloc] initWithString:@"http://myurl.com/FakeUrl/"]];

Quindi specificare il tipo di richiesta che si desidera effettuare (in questo caso, una richiesta POST ).

MyRequest.method = RKRequestMethodPOST;
MyRequest.HTTPBodyString = YourPostString;

E quindi imposta la tua richiesta come JSON in additionalHTTPHeaders .

MyRequest.additionalHTTPHeaders = [[NSDictionary alloc] initWithObjectsAndKeys:@"application/json", @"Content-Type", @"application/json", @"Accept", nil];

Infine, è possibile inviare la richiesta.

[MyRequest send];

Inoltre puoi NSLog tua richiesta per vedere il risultato.

RKResponse *Response = [MyRequest sendSynchronously];
NSLog(@"%@", Response.bodyAsString);

Fonti: RestKit and .

Question

Voglio inviare il mio JSON a un URL ( POST e GET ).

NSMutableDictionary *JSONDict = [[NSMutableDictionary alloc] init];
[JSONDict setValue:"myValue" forKey:"myKey"];

NSData *JSONData = [NSJSONSerialization dataWithJSONObject:self options:kNilOptions error:nil];

Il mio codice di richiesta corrente non funziona.

NSMutableURLRequest *requestData = [[NSMutableURLRequest alloc] init];

[requestData setURL:[NSURL URLWithString:@"http://fake.url/"];];

[requestData setHTTPMethod:@"POST"];
[requestData setValue:postLength forHTTPHeaderField:@"Content-Length"];
[requestData setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[requestData setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[requestData setHTTPBody:postData];

L'utilizzo di ASIHTTPRequest non è una risposta responsabile.




- (void) {fetchData

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    NSData* data = [NSData dataWithContentsOfURL:[NSURL
                                                  URLWithString:@"yourURL"]];
    NSLog(@"LatestURL:%@",data);
    NSError* error=nil;
    NSDictionary *jsonDict= [NSJSONSerialization JSONObjectWithData:data
                                                            options:kNilOptions error:&error];
    NSLog(@"JSON = %@", [[NSString alloc] initWithData:data encoding:
                         NSUTF8StringEncoding]);
    dispatch_async(dispatch_get_main_queue(), ^{


    NSDictionary *statuses=[jsonDict objectForKey:@"result"];
    NSLog(@"SomeStatus :%@",statuses);

    if (!statuses)
    {
        NSLog(@"Error in Json :%@",error);
    }
    else
    {
        [self.arrayTimeline removeAllObjects];
        for(NSDictionary *newValu in statuses)
        {
            [self.arrayTimeline addObject:newValu];
            NSString *ProjectName=[newValu objectForKey:@"project_name"];
            NSLog(@"Project Name : %@",ProjectName);
            NSString *Stage=[newValu objectForKey:@"stage_name"];
            NSLog(@"Stage : %@",Stage);
            NSString *CompTime=[newValu objectForKey:@"completion_time"];
            NSLog(@"Completion Time : %@",CompTime);
            NSString *Status=[newValu objectForKey:@"status"];
            NSLog(@"Status : %@",Status);
        }
        [self.projectTimelineTable reloadData];
    });
} }); }

puoi ottenere chiavi come nome, start_time ecc. e mostrare sull'etichetta




Links