سؤال

I have a java webservice, with some method.

The webservice methods are in this form:

    @Webservice(paramNames = {"email", "password", "stayLogged", "idClient"},
public Response startSession(String email, String password, Boolean stayLogged, String idClient) throws Exception {
    boolean rC = stayLogged != null && stayLogged.booleanValue();
    UserService us = new UserService();
    User u = us.getUsersernamePassword(email, password);
    if (u == null || u.getActive() != null && !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 && 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);
}

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:

-(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];

    }

}

How can I implement the same client side method on Android???

هل كانت مفيدة؟

المحلول

You have to make JSON in the appropriate form with something like

JSONArray params = new JSONArray();
                params.put("");
                params.put("");
                ....

                JSONObject rpcCall = new JSONObject();
                rpcCall.put("method", METODNAME);
                rpcCall.put("params", params);
                rpcCall.put("id", 1);

and send it to the server with HttpPost httppost and

HttpResponse response = androidClient.execute(httppost);

If you need more info about JSON request there are many tutorials.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top