RPC调用在我的localhost中成功运行,当我推送带有phonegap集成的项目并在android模拟器Rpc call fails and throws status exception 0 or gwt rpc Object not found-404
中测试时。我确实参考了gwt phonegap rpc-Daniel中的教程并做了上面提到的改变:
final ServiceDefTarget serv=(ServiceDefTarget)checkuser;
Window.alert(serv.getServiceEntryPoint());
PhonegapUtil.prepareService(serv,"http://myip:8888/plac/reg","reg");
plac
是我所在的项目空间,reg
是URLPattern。我最终得到status code 0
例外或StatusCodeException 404 Notfound
。
请告诉我错误的地方。
Web.xml中:
<!-- Servlets -->
<servlet>
<servlet-name>Register</servlet-name>
<servlet-class>com.plac.server.Register</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Register</servlet-name>
<url-pattern>/plac/reg</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Register</servlet-name>
<url-pattern>/plac/signup</url-pattern>
</servlet-mapping>
答案 0 :(得分:2)
您的代码需要如下所示:
PhonegapUtil.prepareService(serv,"http://myip:8888/plac/","reg");
第一个参数是你的模块的url,它应该是:
"http://myip:8888/plac/"
以及您服务的相对网址(对您的模块)
"reg"
答案 1 :(得分:0)
尝试添加模式:
<!-- Servlets -->
<servlet>
<servlet-name>Register</servlet-name>
<servlet-class>com.plac.server.Register</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Register</servlet-name>
<url-pattern>/plac/reg</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Register</servlet-name>
<url-pattern>/plac/reg/*</url-pattern>
</servlet-mapping>
您可能有/附加到您的网址。在这种情况下,你将获得404。
您是否在手机环境中跑步?
如果是,请确保允许对服务器进行通配符访问:PhoneGap external hosts wildcard
答案 2 :(得分:0)
我遇到了同样的问题,让我挣扎了好几个小时。在某些时候,我遇到了与上面的解决方案略有不同的解决方案:
当您从浏览器调用http://myip:8888/plac/reg
时,它应该返回
HTTP Status 405 - HTTP method GET is not supported by this URL
,如果它引用了所需的服务。
否则网址丢失了 - 查看您提供的资源我猜测您的GWT网络应用程序的名称丢失了。
尝试http://myip:8888/YourAppName/plac/reg
,而http://myip:8888/YourAppName
是您用来从浏览器中提取GWT应用的网址。
因此,代码应如下所示:
PhonegapUtil.prepareService(serv,"http://myip:8888/YourAppName/plac/","reg");
希望这有帮助。