2012-05-02 2 views
2

나는 하나의 방법을 쓰기가 :asihttprequest SBJson으로 json을 게시하는 방법은 무엇입니까?

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

    NSString *newJSON = [theDictionary JSONRepresentation]; 
    NSLog(@"what to send: %@", newJSON); 

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

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


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



    return responseDict; 
} 

단지 값을 게시하고 반환 값을 구문 분석 내가 그것을 실행하면, 내가 콘솔 출력 간단하게 얻을 수있는 방법

2012-05-02 12:06:29.414 Ushi.com[775:f803] what to send: {"phone":"123456","password":"123456","user_name":"tan"} 
2012-05-02 12:06:29.416 Ushi.com[775:f803] to url = http://api.uat.ushi.cn/user/getProfile?user_id=3 
2012-05-02 12:06:29.449 Ushi.com[775:f803] -JSONValue failed. Error is: Illegal start of token [<] 
2012-05-02 12:06:29.449 Ushi.com[775:f803] responseString = <html><head><title>Apache Tomcat/6.0.20 - Error report</title><style><!--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;}--></style> </head><body><h1>HTTP Status 405 - Request method 'POST' not supported</h1><HR size="1" noshade="noshade"><p><b>type</b> Status report</p><p><b>message</b> <u>Request method 'POST' not supported</u></p><p><b>description</b> <u>The specified HTTP method is not allowed for the requested resource (Request method 'POST' not supported).</u></p><HR size="1" noshade="noshade"><h3>Apache Tomcat/6.0.20</h3></body></html> 
(lldb) 

하고 그것을 충돌!하지만 내가 라인 [request appendPostData:[newJSON dataUsingEncoding:NSUTF8StringEncoding]];에 대한 의견을 나는 데이터를 받게되지만 또한 충돌합니다. 미리 감사드립니다 ...

답변

1

서버에서 가져온 것이 유효한 JSON이 아니기 때문에 그것이 일반 html입니다.

문제는 서버가 POST을 지원하지 않으므로 오류 페이지를 반환한다는 것입니다.