Skip to main content

Json-RPC Method from iOS to Android



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???


Comments

Popular posts from this blog

Why is this Javascript much *slower* than its jQuery equivalent?

I have a HTML list of about 500 items and a "filter" box above it. I started by using jQuery to filter the list when I typed a letter (timing code added later): $('#filter').keyup( function() { var jqStart = (new Date).getTime(); var search = $(this).val().toLowerCase(); var $list = $('ul.ablist > li'); $list.each( function() { if ( $(this).text().toLowerCase().indexOf(search) === -1 ) $(this).hide(); else $(this).show(); } ); console.log('Time: ' + ((new Date).getTime() - jqStart)); } ); However, there was a couple of seconds delay after typing each letter (particularly the first letter). So I thought it may be slightly quicker if I used plain Javascript (I read recently that jQuery's each function is particularly slow). Here's my JS equivalent: document.getElementById('filter').addEventListener( 'keyup', function () { var jsStart = (new Date).getTime()...

Is it possible to have IF statement in an Echo statement in PHP

Thanks in advance. I did look at the other questions/answers that were similar and didn't find exactly what I was looking for. I'm trying to do this, am I on the right path? echo " <div id='tabs-".$match."'> <textarea id='".$match."' name='".$match."'>". if ($COLUMN_NAME === $match) { echo $FIELD_WITH_COLUMN_NAME; } else { } ."</textarea> <script type='text/javascript'> CKEDITOR.replace( '".$match."' ); </script> </div>"; I am getting the following error message in the browser: Parse error: syntax error, unexpected T_IF Please let me know if this is the right way to go about nesting an IF statement inside an echo. Thank you.