【问题标题】:How to get data from a json-rpc webservice : iPad /iPhone / Objective C如何从 json-rpc webservice 获取数据:iPad /iPhone / Objective C
【发布时间】:2010-12-20 09:24:29
【问题描述】:

我正在开发一个 iPad 项目,该项目需要与 json-rpc 网络服务通信。网络服务基于 Drupal 模块:cck 和视图

1)我需要将一个 json 对象推送到 web 服务中 2)我需要来自网络服务的回调数据

我已经为 iPad 项目实现了 SBJSON api 和 https://github.com/samuraisam/DeferredKit/ api。

SBJSON api 工作正常,我理解这个 Samuriaisam DeferedKit 对我来说是新的

我的问题是如何从这个 json-rpc 网络服务中获取数据,有人有一些示例代码吗?或者一些我可以找到 Objective C - json-rpc webservice 文档的地方。

亲切的问候,

巴特斯库恩

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

我现在使用这个代码:

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"}

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

怎么了?有人有这方面的经验吗?

亲切的问候,

巴特·舒恩

【问题讨论】:

    标签: iphone objective-c ipad webservice-client json-rpc


    【解决方案1】:

    读取 JSON 文件获取该数据。

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

    【讨论】:

    • 感谢您的帖子,不完全是我想要的,我在上面发布了一些新代码。你有什么建议吗?亲切的问候,Bart Schoon
    • 嗨,巴特,您检查过您收到的 JSon 文件是否有效。否则,您可以临时尝试使用其他 JSON 文件。如果你会得到同样的错误,那么看看这个链接:groups.google.com/group/json-rpc/web/json-rpc-1-2-proposal
    • 好的,它可以工作。我已经选择在 Drupal 中使用普通的 json 方法而不是 rpc 版本。所以现在我将一些 POST 变量发布到服务器并收到一个 json 字符串返回。谢谢你帮助我!
    【解决方案2】:
       -(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 方法;)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-19
      • 1970-01-01
      • 1970-01-01
      • 2013-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多