2010-12-20 1 views
4

Я работаю над проектом iPad, и этому проекту нужно поговорить с веб-службами json-rpc. На веб-сервисы основаны на Drupal с модулем: CCK и просмотровКак получить данные из json-rpc webservice: iPad/iPhone/Objective C

1) Мне нужно нажать на объект JSON в WebService 2) Мне нужно обратного вызова данных из веб-сервиса

Я уже реализовали SBJSON апи и https://github.com/samuraisam/DeferredKit/ api к проекту iPad.

SBJSON апи работает отлично, и я понимаю, это один Samuriaisam DefferedKit ново для меня

Мой вопрос заключается в том, чтобы получить данные из этого JSON-RPC веб-сервиса, есть кто-то какой-то образец кода? Или в некоторых местах, где я могу найти документацию 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"} 

---------/Update --------

Что не так? У кого-то есть опыт?

Уважением,

Барт 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

Read JSon файл получить эти данные.

NSDictionary * dictionary = [jsonString JSONValue]; Вы получите ключ & пара значений. Храните эти данные в соответствующей переменной.

+0

Спасибо за ваше сообщение, Не совсем то, что я ищу, я отправил некоторые новый код выше. У вас есть рекомендации? С уважением, Bart Schoon –

+0

Привет, Барт, вы проверили файл JSon, который вы получаете, действительно ли это или нет. В противном случае вы можете попробовать с другим файлом JSon для временного назначения. Тем не менее, если вы получите ту же ошибку, посмотрите на эту ссылку: http://groups.google.com/group/json-rpc/web/json-rpc-1-2-proposal –

+0

Хорошо, это работает. Я сделал выбор, чтобы использовать обычный json-метод в Drupal вместо версии rpc. Итак, теперь я отправляю на сервер некоторые POST-переменные и получаю строку json Back. Thx за то, что помог мне! –