2010-12-20 43 views
4

我正在开发一个iPad项目,并且该项目需要与json-rpc webservices进行交流。 web服务是基于Drupal的与模块:CCK和视图如何从json-rpc webservice获取数据:iPad/iPhone/Objective C

1)I需要推动JSON对象到web服务 2)I需要从web服务回调数据

我已经实施了SBJSON API以及iPad项目的https://github.com/samuraisam/DeferredKit/ api。

的SBJSON API工作正常,我明白这一个 的Samuriaisam DefferedKit是新的,我

我的问题是如何将数据从这个JSON-RPC web服务的,有别人一些示例代码?或者在某些地方我可以找到Objective C - json-rpc webservice文档。

亲切的问候,

巴特Schoon

--------- --------更新

我现在使用此代码:

NSString *jsonString = @"{\"method\":\"views.get\",\"params\":{\"view_name\":\"client_list\",\"sessid\":\"xxxxxx\"},\"id\":1}"; 
    NSString *requestString = [NSString stringWithFormat:@"%@",jsonString,nil]; 

    NSLog(@"input: %@",jsonString); 

    NSData *requestData = [NSData dataWithBytes: [jsonString UTF8String] length: [jsonString length]]; 

    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL: [NSURL URLWithString:@"http://subdomain.domain.com/services/json-rpc"]]; 

    NSString *postLength = [NSString stringWithFormat:@"%d", [requestData length]]; 
    [request setHTTPMethod: @"POST"]; 
    [request setValue:@"Content-type: application/json" forHTTPHeaderField:@"Content-Type"]; 
    [request setHTTPBody:requestData]; 

    //Data returned by WebService 
    NSData *returnData = [NSURLConnection sendSynchronousRequest: request returningResponse: nil error: nil ]; 
    NSString *returnString = [[NSString alloc] initWithData:returnData encoding: NSUTF8StringEncoding]; 
    NSLog(@"output: %@",returnString); 

这将导致此消息来自服务器:

{"error":{"name":"JSONRPCError","code":-32600,"message":"The received JSON not a valid JSON-RPC Request"},"version":"1.1"} 

--------- /更新--------

有什么不对?有人有此经验吗?

亲切的问候,

巴特Schoon

回答

0
-(IBAction)testCall{ 
    NSString *requestString = [NSString stringWithFormat:@"method=views.get&view_name=client_list",nil]; 
    NSLog(requestString); 


    NSData *requestData = [NSData dataWithBytes: [requestString UTF8String] length: [requestString length]]; 


    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL: [NSURL URLWithString: @"http://.xxxxxxxxx.nl/services/json"]]; 

    NSString *postLength = [NSString stringWithFormat:@"%d", [requestData length]]; 
    [request setHTTPMethod: @"POST"]; 
    [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; 
    [request setHTTPBody: requestData]; 

    //Data returned by WebService 
    NSData *returnData = [NSURLConnection sendSynchronousRequest: request returningResponse: nil error: nil ]; 
    NSString *returnString = [[NSString alloc] initWithData:returnData encoding: NSUTF8StringEncoding]; 

    NSLog(returnString); 
    NSDictionary *dict = [returnString JSONValue]; 

    } 

只要不使用一个JSON-RPC - 保持它的简单和JSON正常JSON方法)

1

读取JSON文件获得这些数据。

NSDictionary * dictionary = [jsonString JSONValue]; 您将获得密钥&值对。将该数据存储在各自的变量中。

+0

谢谢你的帖子, 不正是我期待的,我贴了一些上面的新代码。你有一些建议吗? 亲切的问候, 巴特肖恩 – 2010-12-21 09:39:06

+0

嗨巴特,你检查JSon文件,你收到它是否有效。否则,您可以尝试与其他JSon文件临时用途。不过,如果你会得到相同的错误,那么看看这个链接:http://groups.google.com/group/json-rpc/web/json-rpc-1-2-proposal – 2010-12-21 10:39:34

+0

好吧,它的工作原理。我已经选择在Drupal中使用普通的json方法而不是rpc版本。所以现在我发布一些POST变量到服务器并接收一个json字符串返回。 Thx帮助我! – 2010-12-24 14:18:48

相关问题