Как сделать запросы и передать (данные 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();
}
  1. Это мой класс 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();
    }
    }
  1. Это мой 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();
    }
    
  2. Вот как я вызываю API для публикации данных, но он всегда возвращает пустое { }. Буду очень признателен за ваши примеры.

1 ответ

У меня была похожая проблема. Просто добавьте параметры в вашу функцию входа (long param).

Другие вопросы по тегам