2 Stimmen

Asihttprequest wie man json mit SBJson postet?

Ich habe eine Methode geschrieben:

-(id)postAndParseJson:(NSMutableDictionary *)theDictionary action:(NSString *)action type:(NSString *)myType {

    NSString *newJSON = [theDictionary JSONRepresentation];
    NSLog(@"was gesendet wird: %@", newJSON);

    NSURL *url = [NSURL URLWithString:@"http://api.uat.ushi.cn/user/getProfile?user_id=3"];
    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
    NSLog(@"zu URL = %@",url);
    [request appendPostData:[newJSON dataUsingEncoding:NSUTF8StringEncoding]];

    [request startSynchronous];
    NSString *responseString = [request responseString];    

    NSMutableDictionary* responseDict = [responseString JSONValue];
    NSLog(@"responseString = %@",responseString);

    return responseDict;
}

Die Methode ist einfach, sie sendet den Wert und analysiert den Rückgabewert. Wenn ich sie ausführe, erhalte ich die Konsolenausgabe:

2012-05-02 12:06:29.414 Ushi.com[775:f803] was gesendet wird: {"phone":"123456","password":"123456","user_name":"tan"}
2012-05-02 12:06:29.416 Ushi.com[775:f803] zu URL = http://api.uat.ushi.cn/user/getProfile?user_id=3
2012-05-02 12:06:29.449 Ushi.com[775:f803] -JSONValue fehlgeschlagen. Fehler lautet: Ungültiger Token-Start [<]
2012-05-02 12:06:29.449 Ushi.com[775:f803] responseString = Apache Tomcat/6.0.20 - Fehlerbericht<!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}--> HTTP Status 405 - Anforderungsmethode 'POST' nicht unterstütztTyp StatusberichtNachricht Anforderungsmethode 'POST' nicht unterstütztBeschreibung Die angegebene HTTP-Methode ist für die angeforderte Ressource nicht zulässig (Anforderungsmethode 'POST' nicht unterstützt).Apache Tomcat/6.0.20
(lldb) 

Und es stürzt ab! Aber wenn ich die Zeile kommentiere [request appendPostData:[newJSON dataUsingEncoding:NSUTF8StringEncoding]]; erhalte ich die Daten, aber es stürzt auch ab. Danke im Voraus...

1voto

Nikita Pestrov Punkte 5696

Das liegt daran, dass das, was du vom Server bekommst, kein gültiges JSON ist, sondern einfach HTML.

Das Problem ist, dass dein Server kein POST unterstützt, daher wird eine Fehlerseite zurückgegeben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X