Apache httpclient: учебник не работает - как на самом деле использовать эту библиотеку? - PullRequest
0 голосов
/ 09 марта 2012

Я использую NetBeans в качестве IDE, чтобы дать вам представление о фоне.

Я играю с библиотекой Apache httpclient, так как в моем текущем приложении у меня возникают проблемы с встроенным HTTP-соединением Java.

Я слышал, что библиотека apache была более мощной.

В любом случае, учебная документация, которая поставляется с библиотекой httpclient на сайте apache, кажется некорректной:

HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet("http://localhost/");
HttpResponse response = httpclient.execute(httpget);

Net Beans дает мне проблемы с этим фрагментом кода (скопировано прямо из учебника).Забудьте даже элементарный URI localhost, проблемы, которые возникают с этим:

  1. netbeans жалуется, что HttpClient и DefaultHttpClient являются несовместимыми типами.Единственный способ, который я могу увидеть в этом, - это использовать:

    (HttpClient) new DefaultHttpClient(); 
    
  2. Netbeans жалуется, что httpclient.execute() выдаст ошибку, потому что здесь "httpget" - просто метод, а не "HttpUriRequest".".

Как простой трехстрочный учебник может быть таким неправильным и как бы я мог на самом деле успешно выполнить запрос, если в этом примере так много недостатков?

Я потерянМожет кто-то помочь.Кажется, есть несколько разных способов, но не совсем то, что я ищу.

Я хочу иметь возможность взять правильно сформированный URL, который у меня уже есть в приложении в String, а затем следоватьвсе перенаправления.Меня совсем не интересует содержание ответа, просто куки, которые он уронит.

Спасибо,

Грегори

Ответы [ 3 ]

1 голос
/ 09 марта 2012

Предлагаю посмотреть на ваш импорт.Я думаю, что NetBeans импортировал ваш HttpClient 3.x вместо 4.x.Попробуйте исправить ваш импорт.

0 голосов
/ 09 марта 2012

Когда я использовал это (на Android), я реализовал CustomHttpClient, следуя примеру здесь

0 голосов
/ 09 марта 2012

Вы пытались использовать этот код, они, кажется, используют другие механизмы, чем вы. Взято из здесь . Это для версии 3.X, хотя, возможно, вы используете другую версию.

import org.apache.commons.httpclient.*;
import org.apache.commons.httpclient.methods.*;
import org.apache.commons.httpclient.params.HttpMethodParams;

import java.io.*;

public class HttpClientTutorial {

  private static String url = "http://www.apache.org/";

  public static void main(String[] args) {
    // Create an instance of HttpClient.
    HttpClient client = new HttpClient();

    // Create a method instance.
    GetMethod method = new GetMethod(url);

    // Provide custom retry handler is necessary
    method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, 
            new DefaultHttpMethodRetryHandler(3, false));

    try {
      // Execute the method.
      int statusCode = client.executeMethod(method);

      if (statusCode != HttpStatus.SC_OK) {
        System.err.println("Method failed: " + method.getStatusLine());
      }

      // Read the response body.
      byte[] responseBody = method.getResponseBody();

      // Deal with the response.
      // Use caution: ensure correct character encoding and is not binary data
      System.out.println(new String(responseBody));

    } catch (HttpException e) {
      System.err.println("Fatal protocol violation: " + e.getMessage());
      e.printStackTrace();
    } catch (IOException e) {
      System.err.println("Fatal transport error: " + e.getMessage());
      e.printStackTrace();
    } finally {
      // Release the connection.
      method.releaseConnection();
    }  
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...