我有一个Restlet服务器应用程序,它调用客户端资源以访问google端点。
当我在我的代码点:
ClientResource storeRoot = new ClientResource("http://googleendpoint");
String jsonString = storeRoot.get().getText();
我得到了警告和错误:
1月7日,2013年4:33:34 PM org.restlet.engine.component.ClientRoutergetNext警告:此请求使用的协议未在客户端连接器列表。(HTTPS/1.1)。如果你正在使用组件类的实例,检查它的"clients"属性。不Found(404) -服务器没有找到任何匹配请求的内容URI在org.restlet.resource.ClientResource.doError (ClientResource.java: 612)
我搜索了一下,发现解决方案很可能是像这样将协议添加到端点:
component.getClients().add(Protocol.HTTPS);
问题是我在tomcat中运行这个war文件。我在哪里访问这个组件对象来添加协议?
我也改变了我的web.xml来支持这个协议,像这样:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>Restlet adapters</display-name>
<servlet>
<servlet-name>Restlet1</servlet-name>
<servlet-class>org.restlet.ext.servlet.ServerServlet</servlet-class>
<init-param>
<param-name>org.restlet.application</param-name>
<param-value>com.MyApplication</param-value>
</init-param>
<init-param>
<param-name>org.restlet.clients</param-name>
<param-value>HTTP HTTPS FILE</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Restlet1</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
尝试将以下内容添加到您的web.xml中,在<servlet>
元素中。
<!-- Your application class name -->
<init-param>
<param-name>org.restlet.application</param-name>
<param-value>test.MyApplication</param-value>
</init-param>
<!-- List of supported client protocols -->
<init-param>
<param-name>org.restlet.clients</param-name>
<param-value>HTTP HTTPS FILE</param-value>
</init-param>
请参阅http://www.restlet.org/documentation/snapshot/gae/ext/org/restlet/ext/servlet/ServerServlet.html获取更完整的文档。
经过很多心痛之后,我确定解决方案是在web.xml中添加Andy上面提到的参数,并添加以下jar:
org.restlet.ext.netorg.restlet.ext.httpclientorg.restlet.ext.ssl