2

Googleエンドポイントにアクセスする目的でクライアントリソースを呼び出すRestletサーバーアプリケーションがあります。

コードの要点に到達すると、次のようになります。

ClientResource storeRoot = new ClientResource("http://googleendpoint");
  String jsonString = storeRoot.get().getText();

警告とエラーが表示されます:

2013年1月7日16:33:34org.restlet.engine.component.ClientRoutergetNext警告:この要求で使用されるプロトコルは、クライアントコネクタのリストで宣言されていません。(HTTPS / 1.1)。Componentクラスのインスタンスを使用している場合は、その「clients」プロパティを確認してください。見つかりません(404)-サーバーは、org.restlet.resource.ClientResource.doError(ClientResource.java:612)でリクエストURIに一致するものを検出しませんでした

私はグーグルで調べて、ソリューションが次のようにエンドポイントにプロトコルを追加している可能性があることを確認しました:

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>
4

2 に答える 2

4

<servlet>要素内の web.xml に次を追加してみてください。

<!-- 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を参照してください。

于 2013-01-08T13:46:01.963 に答える
2

多くの心痛の後、解決策は、上記の Andy が述べた web.xml への params の追加と、次の jar の追加であると判断しました。

org.restlet.ext.net org.restlet.ext.httpclient org.restlet.ext.ssl

于 2013-01-09T04:08:51.040 に答える