Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 物理设备测试和google app engine后端_Java_Android_Google App Engine - Fatal编程技术网

Java 物理设备测试和google app engine后端

Java 物理设备测试和google app engine后端,java,android,google-app-engine,Java,Android,Google App Engine,我下面尝试做一个android应用程序,在谷歌应用程序引擎上有一个后端。 我现在想在本地测试我的应用程序和GAE Api之间的连接,所以我尝试在我的Nexus 5手机上执行以下代码(不是模拟的) MainActivity.java public class MainActivity extends FragmentActivity { private final String DEBUG_TAG = "MainActivity"; @Override protect

我下面尝试做一个android应用程序,在谷歌应用程序引擎上有一个后端。 我现在想在本地测试我的应用程序和GAE Api之间的连接,所以我尝试在我的Nexus 5手机上执行以下代码(不是模拟的)

MainActivity.java

public class MainActivity extends FragmentActivity {

    private final String DEBUG_TAG = "MainActivity";


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

    /**
     * AsyncTask for calling Mobile Assistant API for checking into a place (e.g., a store)
     */
    private class CheckInTask extends AsyncTask<Void, Void, Void> {
        /**
         * Calls appropriate CloudEndpoint to indicate that user checked into a place.
         *
         * @param params the place where the user is checking in.
         */
        @Override
        protected Void doInBackground(Void... params) {
            CheckIn checkin = new CheckIn();
            // Set the ID of the store where the user is.
            // This would be replaced by the actual ID in the final version of the code.
            checkin.setPlaceId("StoreNo123");
            Checkinendpoint.Builder builder = new Checkinendpoint.Builder(
                    AndroidHttp.newCompatibleTransport(), new JacksonFactory(),
                    null);
            builder = CloudEndpointUtils.updateBuilder(builder);
            Checkinendpoint endpoint = builder.build();
            try {
                endpoint.insertCheckIn(checkin).execute();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return null;
        }
    }
}
public类MainActivity扩展了FragmentActivity{
私有最终字符串DEBUG_TAG=“MainActivity”;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/**
*AsyncTask,用于调用Mobile Assistant API以检查某个位置(例如商店)
*/
私有类CheckInTask扩展异步任务{
/**
*调用适当的CloudEndpoint以指示用户已签入某个位置。
*
*@param params用户正在签入的位置。
*/
@凌驾
受保护的Void doInBackground(Void…参数){
签入签入=新签入();
//设置用户所在商店的ID。
//在代码的最终版本中,这将被实际ID替换。
checkin.setPlaceId(“StoreNo123”);
Checkinendpoint.Builder=新建Checkinendpoint.Builder(
AndroidHttp.newCompatibleTransport(),新JacksonFactory(),
无效);
builder=CloudEndpointUtils.updateBuilder(builder);
Checkinendpoint endpoint=builder.build();
试一试{
insertCheckIn(checkin.execute();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
返回null;
}
}
}
我得到了这个

我应该在哪里得到这个


(来源:)

日志显示: java.net.SocketTimeoutException:在20000ms后连接到/10.0.2.2(端口8888)失败

“实体种类”列表中没有可用的签入

  • 我已在本地启动appengine,我得到:
    INFOS:Dev App Server正在运行
  • 我已将CloudEndPointUtils.java设置为:
    LOCAL\u ANDROID\u RUN=true;
    LOCAL\u APP\u ENGINE\u SERVER\u URL=”http://localhost:8888/“;
    本地应用程序、引擎、服务器、用于ANDROID的URL=”http://10.0.2.2:8888“;
我觉得这是因为我正在使用一个物理设备进行调试

你怎么想,怎么做

(我不知道如何在我的电脑上运行android仿真器,所以如果有其他解决方案,那就太好了)


编辑:我已尝试部署应用程序,但我遇到了相同的问题,出现了相同的日志错误。

这是因为10.0.2.2是使用仿真器时本地主机的地址。如果您想在您的设备上尝试,并且您的所有计算机和设备都连接到本地网络,请尝试将服务器地址更改为http://本地网络ip端口/\u ah/api。启动appengine应用程序时,将主机地址设置为0.0.0.0,以使网络上的其他计算机可以访问它。

我建议首先使用Google api explorer测试api。使用。如果能够访问它,则可能会与服务器url.builder发生冲突。setRootUrl(“);您是否启用了开发服务器来侦听来自本地网络的请求?我已输入:
protectedstatic final boolean local\u ANDROID\u RUN=true;
protected static final String local\u APP\u ENGINE\u server\u URL=”http://0.0.0.0:8888/“;
本地应用程序、引擎、服务器、用于ANDROID的URL=”http://192.***.0.3:8888";
但我也有同样的问题。我做错什么了吗?启动appengine时,你必须明确地将其设置为0.0.0.0,听起来你在使用Eclipse,这个问题基本上回答了如何做:好的,我感觉我就快到了,现在我可以通过
http://192.***.0.3:8888/_-ah/admin/
但我仍然有sam结果是另一个日志错误:
java.net.ConnectException:20000ms后未能连接到localhost/127.0.0.1(端口8888):断开连接失败:ECONREFUSE(连接被拒绝)
我是否应该输入:
String LOCAL\u APP\u ENGINE\u SERVER\u URL=”http://192.168.0.3:8888“;
String LOCAL\u APP\u ENGINE\u SERVER\u URL\u FOR\u ANDROID="http://192.168.0.3:8888“;
在我的android应用程序的CloudEndpointUtils.java中?是的,你可以试试,看起来连接仍在尝试访问本地主机(而不是显式地访问192.168.0.3)无论您上次尝试了什么配置,我要检查的是,在您的手机上进行测试时,必须将哪个变量设置为192.168.0.3地址,然后将其传递给endpoints builder。