0

我试图遵循有关此问题的答案,但没有一个对我有用。

我在 GWT 中有一个简单的 helloworld 应用程序,我试图在我真正的 android 手机上的 phonegap 中运行它。

所以我编译了我的 GWT 应用程序并将 war 文件夹的内容放在我的 phonegap 空白项目的 www 文件夹下(删除了以前在 www 文件夹中的任何内容)。

我通过 phonegap 在我的手机上运行该项目。

我在 phonegap 看到的地址是:http: //192.168.15.118 :3000/

这个应用程序在哪里运行。

所以我在我的代码中做了这个。

PhonegapUtil.prepareService((ServiceDefTarget) service, "http://192.168.15.118:3000/hellogap/", "greet");

服务.greetServer( ....

“hellogap”是我的模块名称(如果需要,我的项目名称是 HelloGap)

当我从 Eclipse 运行 rpc 时一切正常。当我在我的手机上运行 rpc 时,它说:

                  Server replies:
             404 Not Found Cannot POST /hellogap/greet

如果我能得到提示我做错了什么..

谢谢

4

2 回答 2

0

分而治之!

电话方面:拨打您知道它正在工作的服务的电话,例如 yahoo 天气 api ( https://query.yahooapis.com/v1/public/yql?q=select%20wind%20from%20weather.forecast %20where%20woeid%20in%20(select%20woeid%20from%20geo.places(1)%20where%20text%3D%22chicago%2C%20il%22)&format=json&env=store%3A%2F%2Fdatatables.org% 2Falltableswithkeys)。

服务器(您的计算机)端:尝试使用浏览器和/或本地运行的相同 GWT 应用程序调用 api url。

让我们看看情况如何,我们将从那里开始。这个问题有很多可能的问题,我们需要把它缩小一点。

于 2017-04-26T16:53:52.010 回答
0

要使用 Phonegap 在 android 应用程序中访问 web 浏览器之类的战争,您必须了解以下内容,

1)编译后将您的战争部署到Apache Tomcat等服务器。我正在使用Apache Tomcat并将我的战争部署在webapps文件夹中。

2)您的 IP 必须是公共 IP,以便您可以从任何地方访问该战争,否则请确保您的战争和您的移动互联网在同一个网络中。

3)要从 MainActivity 中的 phonegap 项目访问战争,您可以通过以下方式实现,有很多方法可以访问战争,但我更喜欢这个,

        @Override
public void onCreate(Bundle savedInstanceState) {
    try {
        /*
         * This is one way to access war
         * super.onCreate(savedInstanceState);
         * super.loadUrl("file:///android_asset/www/CustomAppHost.html");
         */
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        WebView webView = (WebView) findViewById(R.id.webView1);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.loadUrl("https://www.google.com");//here you can specify your war url

        webView.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);//here you can specify your war url
                return false;
            }
        });

    } catch (Exception e) {
        e.printStackTrace();
    }
}

通过这种方法,您在项目中使用的所有 Servlet 都可以工作,我认为这应该对您有所帮助..

于 2017-04-21T04:52:31.560 回答