我有一个谷歌云端点,它将用户数据添加到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;
答案 0 :(得分:0)
您没有粘贴导入,但我猜测代码中的用户类是GAE api的一部分:User class
要确认它,请检查您的进口。我建议还要将自己的User类重命名为更具体的ex。 UserTransport
。