Как сделать запросы и передать (данные POST для регистрации и входа в систему) данные с клиента Android на сервер (механизм приложений)?
1. Я создал этот проект с помощью Google App Engine и Android-студии. В настройках моего сервера есть учетная запись пользователя, информация о регистрации, информация для входа. и остальные детали пользователя / данные. Я не хочу использовать учетные данные Google для входа в систему. Как делать запросы и передавать (POST-данные для регистрации и входа) данные с Android на сервер? Могу ли я определить класс, который имеет дело исключительно с HTTP-транспортом, и использовать его для создания объекта службы? Я видел примеры кода, которые используют этот тип объекта службы. Я не уверен, что делать для HTTPRequestInitializer?
Tictactoe.Builder builder = new Tictactoe.Builder(
AndroidHttp.newCompatibleTransport(), new GsonFactory(), null);
service = builder.build();”
//TotoClass.java
public Account account() {
return new Account();
}
- Это мой класс API
/** * Коллекция методов "account". * /
public class Account {
/**
* Create a request for the method “account.adduser”.
*
* This request holds the parameters needed by the Toto server. After setting any optional
* parameters, call the {@link Adduser#execute()} method to invoke the remote operation.
*
* @return the request
*/
public Adduser adduser() throws java.io.IOException {
Adduser result = new Adduser();
initialize(result);
return result;
}
public class Adduser extends TotoRequest {
private static final String REST_PATH = “adduser”;
/**
* Create a request for the method “account.adduser”.
*
* This request holds the parameters needed by the the Toto server. After setting any optional
* parameters, call the {@link Adduser#execute()} method to invoke the remote operation.
* {@link
* Adduser#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must
* be called to initialize this instance immediately after invoking the constructor.
*
* @since 1.13
*/
protected Adduser() {
super(Toto.this, “POST”, REST_PATH, null, TotoBoolResponse.class);
}
@Override
public Adduser setAlt(String alt) {
return (Adduser) super.setAlt(alt);
}
@Override
public Adduser setFields(String fields) {
return (Adduser) super.setFields(fields);
}
@Override
public Adduser setKey(String key) {
return (Adduser) super.setKey(key);
}
@Override
public Adduser setOauthToken(String oauthToken) {
return (Adduser) super.setOauthToken(oauthToken);
}
.....
@com.google.api.client.util.Key
private String lastname;
/**
*/
public String getLastname() {
return lastname;
}
public Adduser setLastname(String lastname) {
this.lastname = lastname;
return this;
}
@com.google.api.client.util.Key
private String password;
/**
*/
public String getPassword() {
return password;
}
public Adduser setPassword(String password) {
this.password = password;
return this;
}
@com.google.api.client.util.Key
private String email;
/**
*/
public String getEmail() {
return email;
}
public Adduser setEmail(String email) {
this.email = email;
return this;
}
@com.google.api.client.util.Key
private String firstname;
/**
*/
public String getFirstname() {
return firstname;
}
public Adduser setFirstname(String firstname) {
this.firstname = firstname;
return this;
}
@Override
public Adduser set(String parameterName, Object value) {
return (Adduser) super.set(parameterName, value);
}
}
/**
* Create a request for the method “account.login”.
*
* This request holds the parameters needed by the Toto server. After setting any optional
* parameters, call the {@link Login#execute()} method to invoke the remote operation.
*
* @return the request
*/
public Login login() throws java.io.IOException {
Login result = new Login();
initialize(result);
return result;
}
public class Login extends TotoRequest {
private static final String REST_PATH = “login”;
/**
* Create a request for the method “account.login”.
*
* This request holds the parameters needed by the the Toto server. After setting any optional
* parameters, call the {@link Login#execute()} method to invoke the remote operation. {@link
* Login#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must
* be called to initialize this instance immediately after invoking the constructor.
*
* @since 1.13
*/
protected Login() {
super(Toto.this, “POST”, REST_PATH, null, TotoBoolResponse.class);
}
@Override
public Login setAlt(String alt) {
return (Login) super.setAlt(alt);
}
@Override
public Login setFields(String fields) {
return (Login) super.setFields(fields);
}
@Override
public Login setKey(String key) {
return (Login) super.setKey(key);
}
@Override
public Login setOauthToken(String oauthToken) {
return (Login) super.setOauthToken(oauthToken);
}
….
@com.google.api.client.util.Key
private String password;
/**
*/
public String getPassword() {
return password;
}
public Login setPassword(String password) {
this.password = password;
return this;
}
@com.google.api.client.util.Key
private String email;
/**
*/
public String getEmail() {
return email;
}
public Login setEmail(String email) {
this.email = email;
return this;
}
@Override
public Login set(String parameterName, Object value) {
return (Login) super.set(parameterName, value);
}
}
}
3. Это мой класс учетной записи //AccountClass
/**
* Model definition for Account.
* This is the Java data model class that specifies how to parse/serialize into the JSON that is
* transmitted over HTTP when working with the Toto. For a detailed explanation see:
* http://code.google.com/p/google-http-java-client/wiki/JSON
* */
@SuppressWarnings(“javadoc”)
public final class Account extends com.google.api.client.json.GenericJson {
/**
* The value may be {@code null}.
*/
@com.google.api.client.util.Key
private String email;
/**
* The value may be {@code null}.
*/
@com.google.api.client.util.Key
private String firstname;
/**
* The value may be {@code null}.
*/
@com.google.api.client.util.Key
private String friendlist;
/**
* The value may be {@code null}.
*/
@com.google.api.client.util.Key @com.google.api.client.json.JsonString
private Long id;
/**
* The value may be {@code null}.
*/
@com.google.api.client.util.Key
private String lastname;
/**
* The value may be {@code null}.
*/
@com.google.api.client.util.Key
private String pwdhash;
/**
* @return value or {@code null} for none
*/
public String getEmail() {
return email;
}
/**
* @return value or {@code null} for none
*/
public String getFirstname() {
return firstname;
}
/**
* @return value or {@code null} for none
*/
public String getFriendlist() {
return friendlist;
}
/**
* @return value or {@code null} for none
*/
public Long getId() {
return id;
}
/**
* @param id id or {@code null} for none
*/
public Account setId(Long id) {
this.id = id;
return this;
}
………
/**
* @return value or {@code null} for none
*/
public String getPwdhash() {
return pwdhash;
}
/**
* @param pwdhash pwdhash or {@code null} for none
*/
public Account setPwdhash(String pwdhash) {
this.pwdhash = pwdhash;
return this;
}
@Override
public Account set(String fieldName, Object value) {
return (Account) super.set(fieldName, value);
}
@Override
public Account clone() {
return (Account) super.clone();
}
}
Это мой Android ## Звонок
doInBackground(String… params){ try { Account account = new Account(); account.setEmail(params[0]); account.setPwdhash(params[1]); Toto apiServiceHandle = AppConstants.getApiServiceHandle(); Log.e(LOG_TAG, “apiServiceHandle”); TotoBoolResponse response ; apiServiceHandle.account().login().setEmail(“[email protected]”); apiServiceHandle.account().login().setPassword(“test”); response = apiServiceHandle.account().login().execute(); }
Вот как я вызываю API для публикации данных, но он всегда возвращает пустое { }. Буду очень признателен за ваши примеры.
1 ответ
У меня была похожая проблема. Просто добавьте параметры в вашу функцию входа (long param).