Android应用 - 调用Google云端点 - 自定义数据类型输入参数

时间:2016-09-15 18:02:57

标签: android google-cloud-endpoints

我有一个谷歌云端点,它将用户数据添加到mysql google云上的表格中。我从我的Android应用程序调用此端点。我将用户的数据以User对象(由我创建的自定义数据类型)的形式传递给端点。请求命中服务但对象内的值为null。我的意思是说,在服务器端userDetails.getUserId()userDetails.getUserEmail()userDetails.getUserName()都是NULLS。 我的终端代码如下:

@ApiMethod(name = "addUser")
public UserResponse addUser(User userDetails) {
    UserResponse response = new UserResponse();
    String query = "{ call myDbName.mySPName(?,?,?) }";
    ResultSet rs;

    try{
    String url = null;
    if (SystemProperty.environment.value() == SystemProperty.Environment.Value.Production) {
        // Connecting from App Engine.
        // Load the class that provides the "jdbc:google:mysql://"
        // prefix.
        try {
            Class.forName("com.mysql.jdbc.GoogleDriver");
            url ="jdbc:google:mysql://my-project-name:myDbName?user=root";
        }catch (ClassNotFoundException ex){}
    } else {
        // Connecting from an external network.
        try{
        Class.forName("com.mysql.jdbc.Driver");
        url = "jdbc:mysql://mysql-google-cloud-ip:3306?user=root";
        }catch (ClassNotFoundException ex){}
    }
    Connection conn = DriverManager.getConnection(url);

         CallableStatement stmt = conn.prepareCall(query);
        stmt.setString(1, userDetails.getUserId());
        stmt.setString(2, userDetails.getUserEmail());
        stmt.setString(3, userDetails.getUserName());
        stmt.executeUpdate();
        response.setResult(1);
    }
    catch (SQLException ex) {
        System.out.println(ex.getMessage());
        response.setResult(0);
        log.severe(ex.getMessage()+ex.getStackTrace());
    }
    return response;
}

请让我知道如何解决这个问题。我在某处读过它,云端点只支持原始数据类型。我确实有一些端点需要嵌套复杂对象形式的大量数据,我不能只依赖原始数据类型。

修改

我的端点的导入部分如下所示:

import com.google.api.server.spi.config.Api;
import com.google.api.server.spi.config.ApiMethod;
import com.google.api.server.spi.config.ApiNamespace;

import javax.inject.Named;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.CallableStatement;

1 个答案:

答案 0 :(得分:0)

您没有粘贴导入,但我猜测代码中的用户类是GAE api的一部分:User class 要确认它,请检查您的进口。我建议还要将自己的User类重命名为更具体的ex。 UserTransport