title: Json-RPC Method from iOS to Android
body: <p>I have a java webservice, with some method.</p>
  
  <p>The webservice methods are in this form:</p>
  
  <pre><code>    @Webservice(paramNames = {"email", "password", "stayLogged", "idClient"},
  public Response startSession(String email, String password, Boolean stayLogged, String idClient) throws Exception {
      boolean rC = stayLogged != null &amp;&amp; stayLogged.booleanValue();
      UserService us = new UserService();
      User u = us.getUsersernamePassword(email, password);
      if (u == null || u.getActive() != null &amp;&amp; !u.getActive().booleanValue()) {
          return ErrorResponse.getAccessDenied(id, logger);
      }
      InfoSession is = null;
      String newKey = null;
      while (newKey == null) {
          newKey = UserService.md5(Math.random() + " " + new Date().getTime());
          if (SessionManager.get(newKey) != null) {
              newKey = null;
          } else {
              is = new InfoSession(u, rC, newKey);
              if (idClient != null &amp;&amp; idClient.toUpperCase().equals("ANDROID")) {
                  is.setClient("ANDROID");
              }
              SessionManager.add(newKey, is);
          }
      }
      logger.log(Level.INFO, "New session started: " + newKey + " - User: " + u.getEmail());
      return new Response(new InfoSessionJson(newKey, is), null, id);
  }
  </code></pre>
  
  <p>The webservice can receive json-rpc calls,
  and the client-side code that can invoke the methods of the webservice, in iOS has this form:</p>
  
  <pre><code>-(void)asynchronousRPCWithMethod:(NSString *)method andParams:(NSArray *)params{
  
      NSLog(@"REMOTE PROCEDURE CALL ON %@", method);
      self.rpcMethod = method;
  
      NSMutableString *requestString = [[NSMutableString alloc] init];
  
      //setting method
      [requestString appendFormat:@"{\"method\":\"%@\"", method];
  
      //setting params
      [requestString appendString:@", \"params\":["];
  
      int max = [params count];
      int c = 0;
  
      for (NSString *str in params){
          c++; 
          [requestString appendFormat:@"\"%@\"", str];
          if (c==max){
  
          }
          else{
              [requestString appendString:@", "];
          }
      }
  
      [requestString appendFormat:@"], \"id\":1}"];
  
      NSLog(@"Request:\n%@", requestString);
  
      NSData *requestData = [NSData dataWithBytes:[requestString UTF8String] length:[requestString length]];
  
      [requestString release];
  
      NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:WEBSITELINK]] autorelease];
  
      [request setHTTPMethod:@"POST"];
      [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
      [request setHTTPBody:requestData];
  
      NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:NO];
      [conn scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];
      [conn start];
  
      UIApplication *app = [UIApplication sharedApplication];
      app.networkActivityIndicatorVisible = YES;
  
      if (conn) {
          NSMutableData *data = [[NSMutableData alloc] init];
          self.receivedData = data;
          [data release];
      }
      else {
          NSError *error = [NSError errorWithDomain:RPCErrorDomain
                                               code:RPCErrorNoConnection
                                           userInfo:nil];
          NSLog(@"*** error ***\n%@", error);
          /**
           * SENT A MESSAGE WITH A ERROR
           */
          if ([self.delegate respondsToSelector:@selector(rpcDidFailWithError:)])
              [delegate rpcDidFailWithError:error];
  
      }
  
  }
  </code></pre>
  
  <p><strong>How can I implement the same client side method on Android???</strong></p>