如何获取HTTP请求的JSON响应

时间:2011-12-30 12:53:29

标签: iphone ios json cocoa-touch nsurlrequest

WebService能够以XML,纯文本和JSon提供响应。

我可以成功获得XML响应。 我担心的是,如何以JSon格式(不是XML或纯文本)获得响应。

- (void)connectionDidFinishLoading:(NSURLConnection *)connection 
{
   NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
    SBJsonParser *parser = [[SBJsonParser alloc] init];
    NSMutableArray *array = [parser objectWithString:responseString error:nil];

    NSString *success = [array valueForKey:@"Successful"];
    NSString *token = [array valueForKey:@"Token"];
}

上面是处理响应的代码(我确实假设了JSon,但它是XML)。 因此应用程序崩溃了。

以下是我得到的回应:

<AuthenticatedUser xmlns="http://schemas.datacontract.org/2004/07/XYZCOMPANY.ABC.DataContracts.Mobile" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><ErrorMsg i:nil="true"/><Successful>true</Successful><Token>MHlc8yKBgghjkfPHZ2oOvabvMWA=</Token></AuthenticatedUser>

3 个答案:

答案 0 :(得分:1)

如果你没有遇到错误的端点,你可能需要将http接受标头设置为“application / json”,就像@rckoenes所说的那样。您还可以尝试使用CURL甚至是Web浏览器来查看服务,以查看json服务是否正在运行。

以下是它为我请求由SOAPUI创建的本地JSON服务的代码:

NSURLRequest *request = [[NSURLRequest alloc]
                        initWithURL: [NSURL URLWithString:SERVERURL]
                        cachePolicy: NSURLRequestReloadIgnoringLocalCacheData
                        timeoutInterval: 10];

NSURLConnection *connection = [[NSURLConnection alloc]
                        initWithRequest:request
                        delegate:self
                        startImmediately:YES];
if(!connection) {
        DLog(@"connection failed");
} else {
        DLog(@"Connection succeeded");

}

答案 1 :(得分:0)

取决于如何编写Web服务......

http://davidwalsh.name/web-service-php-mysql-xml-json

答案 2 :(得分:-1)

在您的应用程序中导入JSON框架。 Refer this