java - http客户端错误

标签 java apache http

我是 httpclient 类的新手。执行该行时,我收到 NoClassDefFoundError 错误。有什么线索吗?

HttpClient client = new HttpClient();

Java代码

import org.apache.commons.httpclient.URI;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.HostConfiguration;

import org.apache.commons.httpclient.protocol.Protocol;

import java.io.File;
import java.io.IOException;
import java.io.FileOutputStream;

public class Client {   
    public static void main(String args[]) {

    HttpClient client = new HttpClient();
    client.getParams().setParameter("http.useragent", "Test Client");
    client.getParams().setParameter("http.connection.timeout",new Integer(5000));

    GetMethod method  = new GetMethod();
    FileOutputStream fos = null;

    try {

  method.setURI(new URI("http://www.google.com", true));
  int returnCode = client.executeMethod(method);

  if(returnCode != HttpStatus.SC_OK) {
    System.err.println(
          "Unable to fetch default page, status code: " + returnCode);
      }

      System.err.println(method.getResponseBodyAsString());

      method.setURI(new URI("http://www.google.com/images/logo.gif", true));
      returnCode = client.executeMethod(method);

      if(returnCode != HttpStatus.SC_OK) {
        System.err.println("Unable to fetch image, status code: " + returnCode);
      }

      byte[] imageData = method.getResponseBody();
      fos = new FileOutputStream(new File("google.gif"));
      fos.write(imageData);

      HostConfiguration hostConfig = new HostConfiguration();
      hostConfig.setHost("www.yahoo.com", null, 80, Protocol.getProtocol("http"));

      method.setURI(new URI("/", true));

      client.executeMethod(hostConfig, method);

      System.err.println(method.getResponseBodyAsString());

    } catch (HttpException he) {
      System.err.println(he);
    } catch (IOException ie) {
      System.err.println(ie);
    } finally {
      method.releaseConnection();
      if(fos != null) try { fos.close(); } catch (Exception fe) {}
    }

  }
}

错误日志

Exception in thread "main" java.lang.NoClassDefFoundError:  
org/apache/commons/logging/LogFactory
at org.apache.commons.httpclient.HttpClient.<clinit>(HttpClient.java:66)
at Client.main(Client.java:17)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 2 more

最佳答案

org-apache-commons-logging.jar添加到类路径中。可以从这个link下载

关于java - http客户端错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21968815/

相关文章:

java - 反射是否要求在字节码中写入文字字符串?

java - 在 Java 编译时将文件内容读入内存

html - 无法下载自己的图标

c - 解压 gzip 后的 HTTP 消息

javascript - 服务器在 ajax 提交时给出 403 错误

java - 如何比较在不同子类中创建的两个对象

java - 在插件中使用 BeanPersistAdapter

java - JTable 面板中显示白框,原因不明

java - 进行 XML 转换时获取 "UTFDataFormatException: encoded string too long"

http - PUT、DELETE、HEAD 等方法在大多数 Web 浏览器中都可用吗?