我跟随this tutorial尝试使用Google app-engine上的后端制作一个andorid应用。 我想测试我的应用与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;
}
}
}
我明白了
我应该在哪里
日志显示: java.net.SocketTimeoutException:20000ms后无法连接到/10.0.2.2(端口8888)
&#34;实体种类没有CheckIn可用&#34;列表
INFOS: Dev App Server is now running
LOCAL_ANDROID_RUN = true;
LOCAL_APP_ENGINE_SERVER_URL = "http://localhost:8888/";
和LOCAL_APP_ENGINE_SERVER_URL_FOR_ANDROID = "http://10.0.2.2:8888";
我觉得这样,因为我使用物理设备进行调试......
您如何看待以及如何使其发挥作用?
(我无法弄清楚如何在我的计算机上运行android的模拟器,以便有另一种解决方案可能会很棒)
编辑:我已尝试部署应用,但我遇到了同样的日志错误问题。
答案 0 :(得分:0)
这是因为10.0.2.2是使用模拟器时localhost的地址。如果要在设备上尝试并且所有计算机和设备都连接到本地网络,请尝试将服务器地址更改为http:// local-network-ip :端口< / STRONG> / _啊/ API。启动appengine应用程序时,将主机地址设置为0.0.0.0,以使其可供网络上的其他计算机访问。