2017-04-14 10 views
0

以下のコードを使用して、ヘッダーにユーザーIDとパスワードを使用してJavaスイングデスクトップアプリケーション(jersey Webアプリケーションで実装されています)からlogin apiを呼び出しようとしています。スレッド「AWT-EventQueue-0」の例外java.lang.NoSuchFieldError:DEF_CONTENT_CHARSET

String authString = username + ":" + password; 
    String authStringEnc = new BASE64Encoder().encode(authString.getBytes()); 
    System.out.println("Base64 encoded auth string: " + authStringEnc); 

    DefaultHttpClient httpClient = new DefaultHttpClient(); 
    HttpGet getRequest = new HttpGet(FVConstants.loginAPI); 
    getRequest.addHeader("Authorization", "Basic " + authStringEnc); 

    HttpResponse response = null; 
    try { 
    response = httpClient.execute(getRequest); 

    if (response.getStatusLine().getStatusCode() != 200) { 
     throw new RuntimeException("Failed : HTTP error code : " 
      + response.getStatusLine().getStatusCode()); 


    } 

    BufferedReader br = new BufferedReader(new InputStreamReader((response.getEntity().getContent()))); 

    String output; 
    System.out.println("Output from Server .... \n"); 
    while ((output = br.readLine()) != null) { 
      System.out.println(output); 
    } 

    httpClient.getConnectionManager().shutdown(); 

} catch (ClientProtocolException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

それは私に述べたように、私はビルドパスからと/.m2/repository/org/apache/から同じライブラリの複数のバージョンを削除しようとしたresponse = httpClient.execute(getRequest);

Exception in thread "AWT-EventQueue-0" java.lang.NoSuchFieldError: DEF_CONTENT_CHARSET 
at org.apache.http.impl.client.DefaultHttpClient.setDefaultHttpParams(DefaultHttpClient.java:175) 
at org.apache.http.impl.client.DefaultHttpClient.createHttpParams(DefaultHttpClient.java:158) 
at org.apache.http.impl.client.AbstractHttpClient.getParams(AbstractHttpClient.java:448) 
at org.apache.http.impl.client.AbstractHttpClient.createClientConnectionManager(AbstractHttpClient.java:309) 
at org.apache.http.impl.client.AbstractHttpClient.getConnectionManager(AbstractHttpClient.java:466) 
at org.apache.http.impl.client.AbstractHttpClient.createHttpContext(AbstractHttpClient.java:286) 
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:851) 
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805) 
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:784) 
at login.Login.callLoginApi(Login.java:67) 
at login.Login.actionPerformed(Login.java:101) 
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) 
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348) 
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) 
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) 
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) 
at java.awt.Component.processMouseEvent(Component.java:6533) 
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) 

行に以下のエラーできますHttpClient DEF_CONTENT_CHARS、もう一度追加しても、同じエラーが表示されます。 ご協力いただきありがとうございます。

+0

このリンクは(http://stackoverflow.com/questions/18246979/java-lang-nosuchfielderror-def-content-charset?noredirect=1&lq=1)[このリンクを参照してください]あなたを助けることを願っています –

+0

私は試したソリューションと同じリンクを使用しています –

答えて

0

以下のコードを使用して解決しました。次のインポートがあることを確認してください。

import org.apache.http.client.HttpClient; 
import org.apache.http.client.methods.HttpGet; 
import org.apache.http.impl.client.HttpClientBuilder; 
import org.apache.http.HttpResponse; 

これらのインポートを使用してライブラリを追加すると、以下のコードを使用するとよいでしょう。

private void callLoginApi(String username, String password) 
{ 
    String authString = username + ":" + password; 
    String authStringEnc = new 
    BASE64Encoder().encode(authString.getBytes()); 
    System.out.println("Base64 encoded auth string: " + authStringEnc); 

    HttpClient client = HttpClientBuilder.create().build(); 
    HttpGet request = new HttpGet(FVConstants.loginAPI); 
    request.addHeader("Authorization", "Basic " + authStringEnc); 

    try { 
     HttpResponse response = client.execute(request); 
     System.out.println("response is : "+response.getStatusLine()); 

    } catch (Exception e) { 
     e.printStackTrace(); 

    } 
} 
関連する問題