当我尝试在我的Android应用中使用GAE来检索特定实体时,我收到以下错误(只有部分实体,其他实现完美)。错误是:
com.google.api.client.googleapis.json.GoogleJsonResponseException: 500 Internal Server Error
{
"code" : 500,
"errors" : [ {
"domain" : "global",
"message" : "Internal Error",
"reason" : "internalError"
} ],
"message" : "Internal Error"
}
com.google.api.client.googleapis.json.GoogleJsonResponseException: 500 Internal Server Error
{
"code" : 500,
"errors" : [ {
"domain" : "global",
"message" : "Internal Error",
"reason" : "internalError"
} ],
"message" : "Internal Error"
}
{
"code" : 500,
"errors" : [ {
"domain" : "global",
"message" : "Internal Error",
"reason" : "internalError"
} ],
"message" : "Internal Error"
}
500 Internal Server Error
{
"code" : 500,
"errors" : [ {
"domain" : "global",
"message" : "Internal Error",
"reason" : "internalError"
} ],
"message" : "Internal Error"
}
{"code":500,"errors":[{"domain":"global","message":"Internal Error","reason":"internalError"}],"message":"Internal Error"}
这似乎没有帮助,我尝试通过this链接中的最佳答案添加日志记录,但这也没有用(没有日志发布到云控制台,或者至少任何日志我试图让事情发生)。我的实体类主题由以下内容定义:
public class ZooperTheme {
@Id
private String themeID;
public String creator;
public String date;
public String address;
public int version;
public String name;
public int size;
public int downloads;
public int favorites;
public int hides;
public int popularity;
public int errors;
public String items;
每个都有适当的getter / setter。 themeID是从1,2,3等开始的Long并转换为字符串。当我使用以下代码时,一切都运行良好(它下载所有主题信息并转换为SQL db:
themeendpoint.Builder endpointBuilder = new themeendpoint.Builder(
AndroidHttp.newCompatibleTransport(),
new JacksonFactory(),
new HttpRequestInitializer() {
public void initialize(HttpRequest httpRequest) { }
});
endpointBuilder.setApplicationName(mCtx.getString(R.string.app_name));
themeendpoint endpoint = CloudEndpointUtils.updateBuilder(
endpointBuilder).build();
DbAdapter dbAdapter = new DbAdapter(mCtx);
dbAdapter.openWrite();
dbAdapter.wipeThemeData();
try {
CollectionResponseTheme response = endpoint.listTheme().execute();
List<Theme> listResponse = response.getItems();
for (Theme zt : listResponse) {
String themeID = zt.getThemeID();
String creator = zt.getCreator();
String date = zt.getDate();
String address = zt.getAddress();
int version = zt.getVersion();
String name = zt.getName();
int size = zt.getSize();
int popularity = zt.getPopularity();
String items = zt.getItems();
if (!(items != null)) {
items = "";
}
dbAdapter.insertTheme(themeID, creator, date, address, "" + version, name, "" + size, "" + popularity, items);
}
但是,当我尝试使用相同的代码创建上面的端点时,请尝试以下操作:
Theme theme2 = endpoint.getTheme("2").execute();
Theme theme1 = endpoint.getTheme("1").execute();
theme2完美运行但是theme1获得了500个代码错误!两者之间的唯一区别是,对于主题“1”,Items列具有信息(只是字符串“test”),主题“2”对于该列是空白的。除此之外,没有差异。我已经使用其他主题ID对此进行了测试,并且如果“项目”列为空,则代码可以正常运行,如果其中包含任何内容,则会显示代码500。这可能会发生什么?
答案 0 :(得分:0)
所以我最终得到了它的工作。我从来没有解决过这个问题,但它解决了:
将包/ SHA1添加到Public API下的凭据页面(我怀疑这样做了什么,因为它不是访问问题“
抛弃所有内容并在新实体下重新上传数据库。在那之后,问题没有再次出现(还)。