Ошибка HttpClient версии 3.1

Я пытаюсь передать файл XML в виде запроса Http POST. Веб-сервис работает нормально, когда я тестирую его с помощью CURL в Linux, и XML правильно сформирован. Я пытаюсь написать утилиту Java, чтобы сделать то же самое. Я нашел образец в библиотеке Apache Commons HttpClient версии 3.1, и вот мой код:

Импорт:

import java.io.File;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.FileRequestEntity;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.RequestEntity;

Код:

String strURL = "https://localhost/scoring";
String strXMLFilename = "C:\\Users\\Test.xml";
File input = new File(strXMLFilename);
PostMethod post = new PostMethod(strURL);
RequestEntity entity = new FileRequestEntity(input, "text/xml; charset=ISO--");
post.setRequestEntity(entity);
Get HTTP client
HttpClient httpclient = new HttpClient();
try 
{
   int result = httpclient.executeMethod(post);
   System.out.println("Response status code: " + result);
   System.out.println("Response body: ");
   System.out.println(post.getResponseBodyAsString());
} 
finally 
{
post.releaseConnection();
}

Я получаю сообщение об ошибке:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
at org.apache.commons.httpclient.HttpMethodBase.<clinit>(HttpMethodBase.java:104)
at Test.main(Test.java:40)

ОБНОВЛЕНИЕ

Добавлен Commons-logging-1.2.jar.

введите здесь описание изображения

Все еще получаю ошибку:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/codec/DecoderException
at org.apache.commons.httpclient.HttpMethodBase.<init>(HttpMethodBase.java:220)
at org.apache.commons.httpclient.methods.ExpectContinueMethod.<init>(ExpectContinueMethod.java:93)
at org.apache.commons.httpclient.methods.EntityEnclosingMethod.<init>(EntityEnclosingMethod.java:119)
at org.apache.commons.httpclient.methods.PostMethod.<init>(PostMethod.java:106)
at Test.main(Test.java:40)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.codec.DecoderException

Его бросили в этой строке:

PostMethod post = new PostMethod(strURL);

Что случилось? Пожалуйста помоги.


person Ram    schedule 21.08.2014    source источник


Ответы (3)


Вы пропустили Apache commons-logging.jar в своем пути к классам. Скачайте его и добавьте в путь к классам.

ОБНОВЛЕНИЕ: Теперь вам нужно commons-codec.jar скачать и добавить его.

person Jens    schedule 21.08.2014

Вам просто нужно добавить jar-файл Apache Commons Logging в путь к классам (библиотеки вашего проекта, если вы используете IDE). Вы можете загрузить его с здесь.

person therealrootuser    schedule 21.08.2014

Я решил эту проблему, импортировав следующую зависимость

    <dependency>
        <groupId>commons-httpclient</groupId>
        <artifactId>commons-httpclient</artifactId>
        <version>3.1</version>
        <exclusions>
            <exclusion>
                <groupId>commons-logging</groupId>
                <artifactId>*</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
person Arturo Bernal    schedule 26.08.2020