0

我们有一个 gwt web 应用程序,现在我们正在为同一个 web 应用程序开发 android 应用程序。在此我们尝试使用 Web 应用程序的服务器端代码,为此我们使用SyncProxy(将 android 应用程序与 RPC 连接)。

我的代码是:

SyncProxy.setBaseURL("http://192.168.1.87/gwtandroidproject/");
        GreetingServiceAsync greetService = SyncProxy.create(GreetingService.class);
        CookieManager cm = ((HasProxySettings) greetService).getCookieManager();


        greetService.greetServer("123", new AsyncCallback<String>() {

            @Override
            public void onFailure(Throwable arg0) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onSuccess(String arg0) {
                // TODO Auto-generated method stub
                Toast.makeText(mainActivity, arg0, 3000);
            }
        });

但例外是

09-03 15:45:52.628: E/AndroidRuntime(21080):
Caused by: com.gdevelop.gwt.syncrpc.exception.SyncProxyException: 
Error POLICY_NAME_POPULATION. Unable to populate policy names

注意:在应用程序中不使用 GAE

4

1 回答 1

1

几件事情要检查(因为您没有使用 App Engine,您可能需要在本地服务器上提供一些详细信息)。从本质上讲,此错误是建议您无法访问策略文件。

  1. 通常,此异常与次要异常一起引发。再往下看一点堆栈跟踪,看看是否有引发 SyncProxyException 的次要异常。如果您在获取跟踪时遇到问题,请捕获此异常并将其包装在新抛出的 RuntimeException 中以获取完整跟踪。
  2. 确保您的服务器是 GWT 编译的。仅验证 GWT 本地接口是否正常工作是不够的,本地服务器路径上必须有完整的 GWT-Compile。
  3. 确保可以从 android 设备的浏览器访问该路径(“ http://192.168.1.87/gwtandroidproject/ ”)。如果没有,请确保相同的网络、相同的 wifi 等
  4. 要获取更多详细信息,请激活 GSP-Android 的日志记录功能。如果您是 0.5,则有些细节尚未正确记录(即将发布的 0.6 版本将提供明显更好的记录)。为此,请执行以下操作:SyncProxy.setLoggingLevel(Level.FINER);。0.5 版本在正确的日志记录方面存在一些问题,这些问题已在 0.6 中解决,但这仍应为您提供一些信息,特别是您想要获取“访问排列文件:”日志条目,它将告诉您正在访问哪个文件。和上一步一样,尝试直接通过浏览器访问这个文件:http: //192.168.1.87/gwtandroidproject/PERM_FILE

除了这些选项之外,请提供有关您正在使用的本地服务器的一些其他详细信息。我只使用 GAE 本地开发服务器进行了测试,但原则应该全面适用......

于 2015-09-04T03:59:51.063 回答