Unterschied zwischen Post & Get-Methode im Json-Parsing in ios
Implementiere ich die JSON-Parsing wie folgt:
-(void)getallEvent
{
SBJSON *json = [SBJSON new];
json.humanReadable = YES;
responseData = [[NSMutableData data] retain];
NSString *service = @"/GetAllVenue";
NSString *str;
str = @"Calagary";
NSString *requestString = [NSString stringWithFormat:@"{\"CityName\":\"%@\"}",str];
//NSLog(@"request string:%@",requestString);
// NSString *requestString = [NSString stringWithFormat:@"{\"GetAllEventsDetails\":\"%@\"}",service];
NSData *requestData = [NSData dataWithBytes: [requestString UTF8String] length: [requestString length]];
NSString *fileLoc = [[NSBundle mainBundle] pathForResource:@"URLName" ofType:@"plist"];
NSDictionary *fileContents = [[NSDictionary alloc] initWithContentsOfFile:fileLoc];
NSString *urlLoc = [fileContents objectForKey:@"URL"];
urlLoc = [urlLoc stringByAppendingString:service];
//NSLog(@"URL : %@",urlLoc);
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL: [NSURL URLWithString: urlLoc]];
NSString *postLength = [NSString stringWithFormat:@"%d", [requestData length]];
[request setHTTPMethod: @"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody: requestData];
// self.connection = [NSURLConnection connectionWithRequest:request delegate:self];
NSError *respError = nil;
NSData *returnData = [NSURLConnection sendSynchronousRequest: request returningResponse: nil error: &respError ];
if (respError)
{
NSString *msg = [NSString stringWithFormat:@"Connection failed! Error - %@ %@",
[respError localizedDescription],
[[respError userInfo] objectForKey:NSURLErrorFailingURLStringErrorKey]];
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Check your network connection" message:msg delegate:self cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alertView show];
[alertView release];
}
else
{
NSString *responseString = [[NSString alloc] initWithData:returnData encoding: NSUTF8StringEncoding];
NSDictionary *results = [[responseString JSONValue] retain];
//NSLog(@" %@",results);
NSString *extractUsers = [[results objectForKey:@"d"] retain];
NSDictionary *finalResult = [[extractUsers JSONValue] retain];
NSLog(@"Final Results : %@",finalResult);
listOfEvents = [finalResult objectForKey:@"List of Event details of given Venue"];
}
Mit diesem code, es verlangsamt die app. Wie kann ich das Parsen der json im hintergrund?
*Ist dieses Recht für die Post-Methode? was ist der Unterschied zwischen Post & Get-Methode?*
Gibt es eine andere Möglichkeit, um json zu Parsen?
- mögliche Duplikate von Was ist der Unterschied zwischen POST und GET?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie sind mit synchronen-request ausgeführt wird, auf Haupt-thread also, wenn Sie brauchen, um es in hintergrund-verwenden Sie asynchrone laden.
POST-METHODE:
Die POST-Methode erzeugt eine FORMULAR-Sammlung, die gesendet wird, wie ein HTTP-request-body. Alle Werte, die Eingabe in der form gespeichert werden, in der FORM-Auflistung.
GET-METHODE: Die GET-Methode sendet die information durch Anhängen der URL (mit einem Fragezeichen) und werden als Querystring-Auflistung. Die Querystring-Auflistung an den server übergeben wird als name/Wert-paar. Die Länge der URL sollte weniger als 255 Zeichen.
Überprüfen Sie diese Antwort für weitere details : was-ist-der-Unterschied-zwischen-post-und-Holen
Synchrone Kommunikation verlangen, die verlangsamt die Anwendung. Sollten Sie die asynchrone Anforderung, um Ihre app reagieren.
Es ist nicht, dass irgendwelche Bedenken mit Parsen von JSON-Daten.
Ich würde empfehlen, mit
AFNetworking
in Ihrem Umfeld, die Vereinfachung der Verbindung-management, background-queue Ausführung und Analyse derJSON
Sie sind immer wieder bilden die server.Code-Beispiel unten wird eine
HTTP
client mit einembase URL (<hostname>)
und erhalten Sie einenJSON
Nutzdaten aus einem angegebenen Pfad. Die Netzwerk-Anfrage wird im hintergrund ausgeführt und führt einen gegebenen block als AbschlussBekommen: Mit der Methode get wird der Wert gesendet wird durch den query-string angehängt mit der url. So können Sie den Namen, den Wert, die Beschreibung auf der addressbar wenn die Seite im browser anzuzeigen.
Post: Dieser Methode übertragen Sie die Informationen über die komplette form. Sie können nicht finden Sie in der detail-Beschreibung auf die Adresse bar. Wenn die Seite anzuzeigen.
Schließlich u die Antwort, die aus einem bestimmten url .und was auch immer u wollte es tun, ur-eigene Art und Weise.