2012-09-20 50 views
-2

我有一个完整的iphone应用程序使用webview,但我正在考虑将其转换为本机应用程序。我在我的应用程序中有几个AJAX API调用,那么如何使用objective c使用相同的参数进行相同的api调用并解码来自它的json格式的响应?将我的iOS webview应用程序转换为本地应用程序

我只需要很好的指针来构建这种应用程序。

+1

[RestKit](http://restkit.org)是一个可以轻松实现与RESTful JSON/XML服务交互的框架。该框架提供了将Web服务响应提取,解析和对象映射到目标c对象的机制。 – mja

+0

方式太宽泛。分解成至少3个问题,并显示一些代码请! – CodaFi

回答

1

这是在后台线程同步调用中执行此操作的示例。 如果你在前台运行它,你应该做一个异步调用。 检查NSURLConnection的Apple文档。

NSMutableDictionary *allParams = [NSMutableDictionary dictionary]; 
[allParams setObject:@"fieldvalue1" forKey:@"fieldname1"]; 
[allParams setObject:@"fieldvalue2" forKey:@"fieldname2"]; 
[allParams setObject:@"fieldvalue3" forKey:@"fieldname3"]; 

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:@"http://someserver/somecgi/"]; 
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; 
[request setHTTPMethod:@"POST"]; 
NSInputStream *inputStream = [allParams queryInputStream]; 
[request setHTTPBodyStream:inputStream]; 

NSHTTPURLResponse *urlResponse = nil; 
NSError *urlError = nil; 
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&urlError]; 

NSMutableDictionary *resultDict = nil; 
if (responseData) 
{ 
    if ([urlResponse statusCode] >= 200 && [urlResponse statusCode] < 300) 
    { 
     NSString *result = [[[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding] autorelease]; 
     /* parse your result here */ 
    } 
} 
相关问题