JSON IPHONE: Wie wird eine JSON-Anfrage gesendet und die Daten von einem Server abgerufen?

Ich weiß kaum etwas über JSON und muss eine Anfrage an einen Server senden und die von ihm kommenden Daten nur mit dem iPhone lesen.

Ich habe versucht, die zu verwendenJason-Framework das zu tun, aber nachdem ich die Dokumentationen gelesen hatte, war ich nicht in der Lage herauszufinden, wie man das Objekt konstruiert und es auf Anfrage sendet. Also habe ich beschlossen, einen anderen Code anzupassen, den ich hier auf SO gesehen habe.

Das Objekt, das ich brauche, ist folgendes:

{"code": xxx}

Hier habe ich ein Problem. Dieses xxx ist ein NSData, also nehme ich an, dass ich diese Daten in eine Zeichenfolge konvertieren muss, dann diese Zeichenfolge zum Erstellen eines Objekts verwenden und diese bei der Anforderung senden muss.

Die Serverantwort ist auch ein JSON-Objekt im Formular

{"answer": "yyy"} wobei yyy eine Zahl zwischen 10000 und 99999 ist

Das ist der Code, den ich bisher habe.

- (NSString *)checkData:(NSData) theData {
    NSString *jsonObjectString = [self encode:(uint8_t *)theData length:theData.length];      
    NSString *completeString = [NSString stringWithFormat:@"http://www.server.com/check?myData=%@", jsonObjectString];                               
    NSURL *urlForValidation = [NSURL URLWithString:completeString];               
    NSMutableURLRequest *validationRequest = [[NSMutableURLRequest alloc] initWithURL:urlForValidation];                          
    [validationRequest setHTTPMethod:@"POST"];             
    NSData *responseData = [NSURLConnection sendSynchronousRequest:validationRequest returningResponse:nil error:nil];  
    [validationRequest release];
    NSString *responseString = [[NSString alloc] initWithData:responseData encoding: NSUTF8StringEncoding];
    NSInteger response = [responseString integerValue];
    NSLog(@"%@", responseString);
    [responseString release];
    return responseString;
}


- (NSString *)encode:(const uint8_t *)input length:(NSInteger)length {
    static char table[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";

    NSMutableData *data = [NSMutableData dataWithLength:((length + 2) / 3) * 4];
    uint8_t *output = (uint8_t *)data.mutableBytes;

    for (NSInteger i = 0; i < length; i += 3) {
        NSInteger value = 0;
        for (NSInteger j = i; j < (i + 3); j++) {
            value <<= 8;

            if (j < length) {
                value |= (0xFF & input[j]);
            }
        }

        NSInteger index = (i / 3) * 4;
        output[index + 0] = table[(value >> 18) & 0x3F];
        output[index + 1] =                    table[(value >> 12) & 0x3F];
        output[index + 2] = (i + 1) < length ? table[(value >> 6)  & 0x3F] : '=';
        output[index + 3] = (i + 2) < length ? table[(value >> 0)  & 0x3F] : '=';
    }

    ret

    urn [[[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding] autorelease];
}

Dieser Code gibt mir nur Fehler. Oder BAD URL oder Java-Ausnahme.

Was ist los mit diesem Code?

Wenn ihr lieber eine andere Lösung mit dem json-Framework geben möchtet, sagt mir bitte, wie ich das Objekt mit diesem Paar codieren soll ("code", "meine NSData hier in String konvertiert") ...

danke für jede hilfe.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage