首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Appengine互联Android prj移动端测试获404分

Appengine互联Android prj移动端测试获404分
EN

Stack Overflow用户
提问于 2012-10-04 16:56:59
回答 2查看 1.6K关注 0票数 1

我启动并运行了我的android+appengine应用程序(端点),在本地机器上一切正常,所以我决定上传我的appengine代码,这样我就可以尝试直接在我的手机上通过Android应用程序访问数据。

当我尝试调用我的appengine后端时,我得到了404错误。

在浏览器上,如果我尝试调用http://[myAppID].appspot.com/_ah/spi,我会得到:

代码语言:javascript
复制
Error: HTTP method GET is not supported by this URL 

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

(允许上网!)

提前感谢!!

下面是代码,这是在一个AsyncTask中执行的:

代码语言:javascript
复制
        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):

代码语言:javascript
复制
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;
}

我为error添加了logcat:

代码语言:javascript
复制
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

代码语言:javascript
复制
------------ 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:其他信息

我试着与我放在appengine war中的java servlet通信,通过浏览器没有问题,一切正常,如果我尝试从命令行ping或尝试以编程方式通信,我会得到这个错误:

代码语言:javascript
复制
"Unable to resolve host "[myappID].appspot.com": No address associated with  hostname"

请任何人帮我找到一个解决方案

编辑3:好消息,我已经能够使用appengine地址调用我的servlet了,版本是:

代码语言:javascript
复制
http://[version].[myAppID].appspot.com/myServlet

而不是:

代码语言:javascript
复制
http://[myAppID].appspot.com/myServlet 

我不知道为什么,但是这样就行了!即使使用版本地址技巧,尝试通过端点调用远程appengine应用程序仍然没有成功,希望这能有所帮助!

EN

回答 2

Stack Overflow用户

发布于 2014-02-11 13:25:52

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

应用程序引擎的默认版本被部署到: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并将您上传的版本设置为default版本

更多信息请点击这里:App Engine Set-up hiccups

票数 1
EN

Stack Overflow用户

发布于 2012-12-06 11:44:11

看起来您尚未被trusted tester计划接受。除非您在TT程序中,否则这将不起作用。您可以在此页面注册:

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

如果被接受,您将收到一封电子邮件。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12723701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档