web-dev-qa-db-ja.com

Restful Webserviceの呼び出し中に取得する絶対的な例外ではないUri

以下のコードスニペットは、Restful APIを使用してWebサービスを呼び出すために使用しています。

ClientConfig config = new DefaultClientConfig();
    Client client = Client.create(config);
    String uri= "https://127.0.0.1:8443/cas-server-webapp-3.5.0/login";
    WebResource resource = client.resource(URLEncoder.encode(uri));
      MultivaluedMap<String, String> queryParams = new MultivaluedMapImpl();
       queryParams.add("username", "suresh");
       queryParams.add("password", "suresh");
       resource.queryParams(queryParams); 
       ClientResponse response = resource.type(
            "application/x-www-form-urlencoded").get(ClientResponse.class);
    String en = response.getEntity(String.class);
    System.out.println(en); 

上記のコードの実行中にこの例外が発生します

com.Sun.jersey.api.client.ClientHandlerException: Java.lang.IllegalArgumentException: URI is not absolute

    at com.Sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.Java:151)
    at com.Sun.jersey.api.client.Client.handle(Client.Java:648)
    at com.Sun.jersey.api.client.WebResource.handle(WebResource.Java:680)

私は多くの記事をグーグルで検索しましたが、どこで間違っているのかわかりませんでした。

サイドノート :cas-server-webapp-3.5.0 Apache tomacat7の私のマシンにデプロイされたwar

14
Suresh Atta

絶対URIはスキームを指定します。絶対ではないURIは相対であると言われます。

http://docs.Oracle.com/javase/8/docs/api/Java/net/URI.html

では、おそらくURLEncoderが期待どおりに機能していません(httpsビット)。

    URLEncoder.encode(uri) 
10
Bob Flannigon

問題は、すでにURIであるものに対してURLEncoder.encode()を呼び出している可能性があります。

4
Julian Reschke

たぶんあなたのIDEエンコーディング設定でのみ問題が発生します。UTF-8をどこでも設定してみてください:

enter image description here

0
Valeriy K.