2010-12-20 3 views
4

iPadプロジェクトで作業していますが、このプロジェクトはjson-rpc webservicesと対話する必要があります。 Webサービスは、モジュールとのDrupalに基づく:CCKおよびビューjson-rpc webserviceからデータを取得する方法:iPad/iPhone/Objective C

1)Iは、Webサービス 2)私は既にSBJSON APIを実装している

Webサービスからのコールバックデータを必要にJSONオブジェクトをプッシュする必要がありますiPadプロジェクトにはhttps://github.com/samuraisam/DeferredKit/ APIがあります。

SBJSON APIが正常に動作し、私はこの1つ が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

があなたのポストをありがとう、 私が探していますないまさに、私はいくつかの投稿しました上記の新しいコード。いくつかのお勧めがありますか? 親愛なる人、 バートシャーン –

+0

こんにちはバートあなたが受け取っているJSonファイルが有効かどうかチェックしましたか?それ以外の場合、一時的な目的で他のJSonファイルを試すことができます。それでも同じエラーが表示される場合は、このリンクをご覧ください:http://groups.google.com/group/json-rpc/web/json-rpc-1-2-proposal –

+0

これは機能します。私は、rpcバージョンの代わりにDrupalで通常のjsonメソッドを使用する選択をしました。だから今私はいくつかのPOST変数をサーバーに投稿し、JSON文字列のBackを受け取ります。私を助けてくれるThx! –