如何从JSON-RPC Web服务获取数据:iPad / iPhone / Objective C
-
11-10-2019 - |
题
我正在从事一个iPad项目,该项目需要与JSON-RPC WebServices进行交谈。 Web服务基于带有模块的Drupal:CCK和视图
1)我需要将JSON对象推入Web服务2)我需要从WebService的回调数据
我已经实现了SBJSON API和 https://github.com/samuraisam/deferredkit/ iPad项目的API。
SBJSON API正常工作,我知道这是Samuriaisam DefferedKit对我来说是新的
我的问题是如何从此JSON-RPC Web服务中获取数据,有人是否有一些示例代码?或我可以找到目标C -JSON -RPC Web服务文档的某些地方。
亲切的问候,
巴特·森恩(Bart 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"}
- - - - -/更新 - - - -
怎么了?有人经历过吗?
亲切的问候,
巴特·森恩(Bart Schoon)
解决方案 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方法;)
其他提示
阅读JSON文件获取该数据。
nsdictionary *dictionary = [jsonstring jsonvalue];您将获得钥匙和价值对。将这些数据存储在您各自的变量中。
不隶属于 StackOverflow