【问题标题】:How to properly import classes: Http Client from Apache Commons如何正确导入类:来自 Apache Commons 的 Http Client
【发布时间】:2015-08-07 10:58:47
【问题描述】:

我开始学习 java,并且在使用我认为从 Apache commons 获得的 Http 方法时遇到了难以置信的困难。我正在尝试创建一个可以在 btc-e.com 上进行比特币交易的课程。

我下载了 HTTPComponents 客户端,然后在我的项目的构建路径中包含了所有 .jar 文件。但由于某种原因,eclipse 仍然无法识别其中一些方法。具体来说,HttpUtils 无法识别。

有人可以逐步指导我如何在我的代码中正确包含这些类吗?我对此真的很陌生,并且花了 6 多个小时试图弄清楚这一点。

这是我所拥有的要点:

public static int Buyy(double rate, double amount){

    Calendar now = Calendar.getInstance();
    long nonce = ( now.getTimeInMillis()/1000);
    String api_key= " ";
    String api_secret = " ";
    // Create a new HttpClient and Post Header
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("http://www.btc-e.com/tapi");

    try {
        // Add data
        HashMap params = new HashMap();
        params.put("method", "Trade");
        params.put("pair", "btc_usd");
        params.put("type", "buy");
        params.put("rate", rate);
        params.put("amount", amount);
        params.put("nonce", nonce);

        HashMap headers = new HashMap();
        headers.put("Contnent-type", "x-www-form-urlencoded");
        headers.put("key", api_key);
        headers.put("sign", api_secret);
        httppost.setEntity(new UrlEncodedFormEntity(params));

        // Execute HTTP Post Request
        HttpResponse response = httpclient.execute(httppost);

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


}

具体来说,我得到的错误是: -import org.apache.http.client.methods.HttpResponse 无法解析

-HttpResponse 无法解析为类型

-org.apache.http.HttpResponse 类型无法解析。它是从所需的 .class 文件中间接引用的

- org.apache.http.entity.StringEntity 类型无法解析。它是从所需的 .class 文件中间接引用的

我认为这意味着我没有导入我需要的所有文件?不过我不知道该怎么做——而且我不确定我需要哪些。我真的迷路了。

谢谢!我真的很感激任何帮助。我正在使用 Eclipse。

这是我已经导入的内容:

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;

import org.apache.commons.codec.binary.Hex;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpResponse;
import org.apache.http.impl.client.DefaultHttpClient;

【问题讨论】:

  • 您使用哪种 IDE 以及如何编译代码?
  • 我正在使用 Eclipse。在 Eclipse 中,我将 .jar 文件添加到构建路径
  • 将 apache JAR 文件移动到 Java 构建路径的“Order and Export”选项卡中的列表顶部。与构建路径中包含的 JAR 文件可能存在冲突。
  • 你也可以列出构建路径中的JAR文件

标签: java eclipse http apache-httpcomponents


【解决方案1】:

对于HttpResponse我认为导入应该是

import org.apache.http.HttpResponse;

而不是

import org.apache.http.client.methods.HttpResponse;

API 中似乎不存在第二个。

还要检查您是否在构建路径中包含了 HttpCore 和 HttpClient 的 JAR。

【讨论】:

  • 谢谢!我仍然没有从 httpCore 添加罐子。这消除了大多数错误消息,但我仍然收到此行的错误: HttpResponse response = httpclient.execute(httppost);错误说: HttpClient 类型的方法 execute(HttpPost) 未定义
  • @adamjts 你修复了HttpResponse 的导入吗?
  • 是的,我将导入更改为您建议的导入。这些都是 apache 导入: import org.apache.commons.httpclient.HttpClient;导入 org.apache.http.HttpRequest;导入 org.apache.http.HttpResponse;导入 org.apache.http.NameValuePair;导入 org.apache.http.client.ClientProtocolException;导入 org.apache.http.client.entity.UrlEncodedFormEntity;导入 org.apache.http.client.methods.HttpPost;
  • 您对HttpClient 的导入不正确:您有import org.apache.commons.httpclient.HttpClient;,它应该是import org.apache.http.client.HttpClient;。您是否在项目中混合了来自 Apache Commons 和 Apache HttpComponents 的 JAR 文件?在构建路径中不要包含太多的 JAR 文件,只需要 httpcore 和 httpclient。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多