【问题标题】:Exception in thread "AWT-EventQueue-0" java.lang.NoSuchFieldError: DEF_CONTENT_CHARSET线程“AWT-EventQueue-0”java.lang.NoSuchFieldError 中的异常:DEF_CONTENT_CHARSET
【发布时间】:2017-04-14 13:02:51
【问题描述】:

我正在尝试使用下面的代码在标头中使用用户 ID 和密码从 java swing 桌面应用程序(在 jersey web 应用程序上实现)调用登录 api。

  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();
}

它在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)

我尝试从构建路径和 /.m2/repository/org/apache/ 中删除同一库的多个版本,如 HttpClient DEF_CONTENT_CHARS 中所述,然后再次添加,仍然给我同样的错误。 任何帮助将不胜感激,谢谢。

【问题讨论】:

  • 希望这个链接能帮到你see this link
  • 我已经提到了与我尝试过的解决方案相同的链接

标签: java rest api jersey apache-commons-httpclient


【解决方案1】:

使用下面的代码解决。请确保您有以下导入。

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();

  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-13
    • 2012-04-06
    • 1970-01-01
    • 2013-04-28
    • 2015-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多