Yes. Server-side resource is implement the AuthorizationResource interface.
/******On the Server side******/
Intranet Application class:
--------
package kz.univer.intranet.server;
import org.restlet.Application;
import org.restlet.Restlet;
import org.restlet.routing.Router;
public class IntranetApplication extends Application {
@Override
public Restlet createInboundRoot() {
Router router = new Router(getContext());
router.attachDefault(AuthenticationServerResource.class);
router.attach("/login", AuthenticationServerResource.class);
return router;
}
}
AuthenticationResource interface:
--------------
package kz.univer.intranet.common;
import org.restlet.resource.Post;
import kz.univer.intranet.common.Authentication;
public interface AuthenticationResource {
@Post
public void login(Authentication auth);
}
AuthenticationServerResource class:
---------
package kz.univer.intranet.server;
import kz.univer.intranet.common.Authentication;
import kz.univer.intranet.common.AuthenticationResource;
import org.restlet.resource.ServerResource;
import org.restlet.resource.Post;
public class AuthenticationServerResource extends ServerResource implements
AuthenticationResource{
Authentication auth = new Authentication("defaultLogin",
"defaultPassword");
@Post
public void login (Authentication auth) {
this.auth = auth;
System.out.println(auth.getLogin());
}
//private final static int SUCCESS_CODE = 1;
//private final static int ERROR_CODE = -1;
}
Authentication class (implements Serializabe)
-----------
package kz.univer.intranet.common;
import java.io.Serializable;
public class Authentication implements Serializable {
private static final long serialVersionUID = 1L;
private String login;
private String password;
public Authentication() {}
public Authentication(String login, String password) {
super();
this.login = login;
this.password = password;
}
public String getLogin() {
return login;
}
public String getPassword() {
return password;
}
public void setLogin(String login) {
this.login = login;
}
public void setPassword(String password) {
this.password = password;
}
}
/********On the client side (client side is Android
app)********/
Authorization class (activity):
-------------
package kz.kaznu.intranet;
import org.restlet.resource.ClientResource;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.util.Log;
import android.widget.EditText;
import java.lang.String;
import android.widget.Button;
public class Authorization extends Activity
{
private static abstract class MyOnClickListener implements
Button.OnClickListener, Runnable {
public abstract void run();
}
public String login = "";
public String password = "";
private static final String TAG = "LoginPassword";
AuthorizationResource resource;
Authentication auth;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
System.setProperty("java.net.preferIPv6Addresses", "false");
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
ClientResource cr = new
ClientResource("http://10.0.2.2:8888/login");
cr.setRequestEntityBuffering(true);
resource = cr.wrap(AuthorizationResource.class);
Button loginBtn = (Button) findViewById(R.id.btn_enter);
Log.i(TAG, "onCreate()");
loginBtn.setOnClickListener(new MyOnClickListener() {
public void onClick(View v) {
Log.i(TAG, "onclick()");
Thread thread = new Thread(this);
thread.start();
}
@Override
public void run() {
try {
Log.i(TAG, "run()");
EditText loginView=
(EditText)findViewById(R.id.edit_login);
EditText passwView = (EditText)
findViewById(R.id.edit_passw);
login = loginView.getText().toString().trim();
password = passwView.getText().toString().trim();
auth = new Authentication("default", "default");
auth.setLogin(login);
auth.setPassword(password);
Log.i(TAG, "before login());
resource.login(auth);
Log.i(TAG, "after login()");
//Log.i(TAG, str);
} catch(Exception e) {
}
}
});
}
}
AuthorizationResource interface
---------------
package kz.kaznu.intranet;
import org.restlet.resource.Post;
import kz.kaznu.intranet.Authentication;
public interface AuthorizationResource {
@Post
public void login(Authentication auth);
}
Authentication class (implements Serializable):
-------------------------
package kz.kaznu.intranet;
import java.io.Serializable;
public class Authentication implements Serializable {
private static final long serialVersionUID = 1L;
private String login;
private String password;
public Authentication() {}
public Authentication(String login, String password) {
super();
this.login = login;
this.password = password;
}
public String getLogin() {
return login;
}
public String getPassword() {
return password;
}
public void setLogin(String login) {
this.login = login;
}
public void setPassword(String password) {
this.password = password;
}
}
-------------------------------------
First i launch server side, then i launcing client app.
The log info(LogCat) gives the following messages:
1) onclick()
2) run()
3) before login()
4) BUT "AFTER LOGIN() " doesn't show
When i delete "implements Serializable" in the Authentication class on
client side, LogCat show "AFTER LOGIN()"
I don't understand. I modified your example on this page
http://wiki.restlet.org/docs_2.1/13-restlet/21-restlet/318-restlet/303-restlet.html
, but I can not send an object of Authentication class from client to server
--
View this message in context:
http://restlet-discuss.1400322.n2.nabble.com/How-send-object-from-client-to-server-tp7451974p7452900.html
Sent from the Restlet Discuss mailing list archive at Nabble.com.
------------------------------------------------------
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=2946860