Appengine连接Android prj在移动测试上得到404

问题描述:

我让我的android + appengine应用程序(端点)启动并运行,在本地机器上一切工作正常,所以我决定上传我的appengine代码,以便可以尝试访问数据Android应用程序直接在我的手机上。Appengine连接Android prj在移动测试上得到404

当我尝试调用我的appengine后端时,出现404错误。

在浏览器中,如果我尝试调用对于http:// [myAppID] .appspot.com访问/ _ah/SPI,我得到:

Error: HTTP method GET is not supported by this URL 

所以主要的serlvet的响应,我究竟做错了什么? ?

(允许Internet授予!)

在此先感谢!

这里的代码,这是一个的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的,我已经把在战争中的AppEngine沟通,通过浏览器没有问题,一切正常,如果我尝试从命令行来ping或尝试以编程方式传达我有这样的错误:

"Unable to resolve host "[myappID].appspot.com": No address associated with hostname" 

请人帮我想想办法

编辑3: 好消息,我已经能够叫我小号ervlet使用AppEngine上的地址与版本是:中

http://[version].[myAppID].appspot.com/myServlet 

代替:

http://[myAppID].appspot.com/myServlet 

我不知道为什么,但这样it'works!仍然没有运气试图通过端点甚至使用版本地址技巧调用远程appengine应用程序,希望这有助于!

+0

显示您的客户端代码,请 – user1049280

+0

你一直acepted信任的测试人员计划对于云端点?如果没有,则在上传时不会接受appengine项目。你可以检查一下appengine控制台,看看appengine项目的上传过程是怎样的 – Johan

+0

你好我的项目正确上传,我可以在浏览器上正确地看到web部分 –

看起来你还没有被接受到可信的测试程序。除非你在TT程序中,否则这将不起作用。 您可以在此页面注册:

http://endpoints-trusted-tester.appspot.com/

时(如果)接受您会收到一封电子邮件。

+0

我认为你错了。常见问题解答说:“我如何访问端点? 答:加入受信任的测试人员组,这将授予您访问文档的权限,不需要进一步的注册或批准。” PS:我遇到同样的问题 – Nilzor

+0

现在这个链接显示“Google Cloud Endpoints 现在每个人都可以使用!” – Moberg

根本原因是您的代码中使用的版本与应用引擎默认版本不同。

App Engine的默认版本部署到: 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,使版本,你所上传的默认版本

这里更多: App Engine Set-up hiccups