我启动并运行了我的android + appengine应用程序(端点),在我的本地计算机上一切正常,所以我决定上传我的appengine代码,以便我可以尝试直接在我的手机上通过Android应用程序访问数据。
当我试图打电话给我的appengine后端时,我收到404错误。
在浏览器上如果我尝试调用http:// [myAppID] .appspot.com / _ah / spi我得到:
Error: HTTP method GET is not supported by this URL
所以主要的serlvet正在回应,我做错了什么?
(获准上网许可!)
提前致谢!!
这是代码,这是在AsyncTask中执行的:
Builder endpointBuilder = new Myendpoint.Builder(AndroidHttp.newCompatibleTransport(), new JacksonFactory(), new HttpRequestInitializer() {
public void initialize(HttpRequest httpRequest) {
}
});
Myendpoint endpoint = CloudEndpointUtils.updateBuilder(endpointBuilder).build();
try {
MyUsers result = endpoint.searchMyUser(params[0]).execute();
return result.getItems().get(0);
} catch (Exception e) {
e.printStackTrace();
return null;
}
这是CloudEnpointUtils中的代码(显然LOCAL_ANDROID_RUN设置为false):
public static <B extends GoogleClient.Builder> B updateBuilder(B builder) {
if (LOCAL_ANDROID_RUN) {
builder.setRootUrl(LOCAL_APP_ENGINE_SERVER_URL + "/_ah/api/");
}
// only enable GZip when connecting to remote server
final boolean enableGZip = builder.getRootUrl().startsWith("https:");
builder.setJsonHttpRequestInitializer(new JsonHttpRequestInitializer() {
public void initialize(JsonHttpRequest jsonHttpRequest) {
jsonHttpRequest.setEnableGZipContent(enableGZip);
}
});
return builder;
}
我添加logcat以获取错误:
10-04 11:40:22.770 W/System.err(13564): com.google.api.client.googleapis.json.GoogleJsonResponseException: 404 Not Found
10-04 11:40:22.770 W/System.err(13564): Not Found
10-04 11:40:22.775 W/System.err(13564): at com.google.api.client.googleapis.services.GoogleClient.executeUnparsed(GoogleClient.java:279)
10-04 11:40:22.775 W/System.err(13564): at com.google.api.client.http.json.JsonHttpRequest.executeUnparsed(JsonHttpRequest.java:207)
10-04 11:40:22.775 W/System.err(13564): at com.appspot.api.services.myuserendpoint.Myuserendpoint$SearchMyUser.execute(Myuserendpoint.java:702)
10-04 11:40:22.775 W/System.err(13564): at it.my.my.app.core.MyBusinessDelegate$MyUserGetter.doInBackground(MyBusinessDelegate.java:303)
10-04 11:40:22.775 W/System.err(13564): at it.my.my.app.core.MyBusinessDelegate$MyUserGetter.doInBackground(MyBusinessDelegate.java:1)
10-04 11:40:22.780 W/System.err(13564): at android.os.AsyncTask$2.call(AsyncTask.java:264)
10-04 11:40:22.780 W/System.err(13564): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
10-04 11:40:22.780 W/System.err(13564): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
10-04 11:40:22.780 W/System.err(13564): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
10-04 11:40:22.785 W/System.err(13564): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
10-04 11:40:22.785 W/System.err(13564): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
10-04 11:40:22.785 W/System.err(13564): at java.lang.Thread.run(Thread.java:856)
编辑:AppEngine DeployLog
------------ Deploying frontend ------------
Preparing to deploy:
Created staging directory at: 'C:\Users\XXXXXXXXX\AppData\Local\Temp\appcfg1884750854541661749.tmp'
Scanning for jsp files.
Compiling jsp files.
Scanning files on local disk.
Initiating update.
Cloning 1 static files.
Cloning 66 application files.
Deploying:
Uploading 0 files.
Initializing precompilation...
Deploying new version.
Verifying availability:
Will check again in 1 seconds.
Will check again in 2 seconds.
Will check again in 4 seconds.
Closing update: new version is ready to start serving.
Updating datastore:
Uploading index definitions.
Deployment completed successfully
EDIT2:其他信息
我尝试与一个java servlet进行通信我已经放入了后面的战争,通过浏览器没有问题一切正常,如果我尝试从命令行ping或尝试以编程方式进行通信我有这个错误:< / p>
"Unable to resolve host "[myappID].appspot.com": No address associated with hostname"
请有人帮我找到解决方案
编辑3: 好消息,我已经能够使用appengine地址调用我的servlet,版本是:
http://[version].[myAppID].appspot.com/myServlet
而不是:
http://[myAppID].appspot.com/myServlet
我不知道为什么但是这样它'工作!即使使用版本地址技巧,仍然没有运气尝试通过端点调用远程appengine应用程序,希望这个帮助!
答案 0 :(得分:1)
根本原因是您的代码中使用的版本与应用引擎默认版本不同。
应用引擎默认版本部署为: HTTP:// [appversion] -your-product-id.appspot.com 您运行的代码已将部署版本指定为1,这意味着在部署时,您的应用将在此处进行检查: http://1-dot-your-project-id.appspot.com因此404(因为本质上,这个URL不会退出。我在这里使用一个用于说明目的)。
要解决此问题,请转到https://appengine.google.com/deployment?app_id=s~your-project-id并将您上传的版本设为默认版本
答案 1 :(得分:-1)
您似乎还没有接受过受信任的测试人员计划。除非您在TT计划中,否则这将无效。 您可以在此页面注册:
http://endpoints-trusted-tester.appspot.com/
接受(如果)时,您会收到一封电子邮件。