Что лучшая библиотека Java должна использовать для POST HTTP, ДОБРАТЬСЯ и т.д.? [закрытый]

Да можно смешать их.

необходимо использовать Objective C, чтобы непосредственно воздействовать на объекты GUI и получить уведомления от них.

Эти объекты Objective C могут непосредственно назвать логику C++ при помещении их в .mm файлы вместо чистого Objective C.m файлы. Обратите внимание, что можно видеть (намного) более старый совет предложить использовать верхний регистр.M для указания на Objective C ++, но это очень облуплено и вероятно смутить Вас, а также компилятор.

Вы не должны переносить каждый объект C++, но Ваш код Objective C должен будет содержать указатели на них.

Apple больше не публикует образцов, показывающих, как сделать это.

существует большое видео Peter Steinberger, размещенным в Realm [Цель] C++: Что Могло Возможно Пойти не так, как надо? я настоятельно рекомендую для любого все еще использование Objective C ++, и можно быстро просмотреть расшифровку стенограммы.

85
задан rmcc 24 August 2009 в 13:13
поделиться

2 ответа

imho: Пример использования HTTP-клиента Apache

:

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

некоторые особенности:

  • На основе стандартов, чистая Java, реализация HTTP версии 1.0 и 1.1
    • Полная реализация всех HTTP-методов (GET, POST, PUT, DELETE, HEAD, OPTIONS и TRACE) в расширяемая объектно-ориентированная структура.
    • Поддерживает шифрование с протоколом HTTPS (HTTP через SSL).
    • Детализированная нестандартная конфигурация и отслеживание.
    • Прозрачные соединения через HTTP-прокси.
    • Туннелированные HTTPS-соединения через HTTP-прокси, через ПОДКЛЮЧИТЬСЯ
    • Прозрачные соединения через прокси SOCKS (версии 4 и 5) с использованием встроенная поддержка сокетов Java.
    • Аутентификация с использованием Basic, Digest и NTLM с шифрованием (NT Lan Manager) методы.
    • Подключаемый механизм для пользовательских методов аутентификации.
    • Многостраничная форма POST для загрузки больших файлов.
    • Подключаемые реализации защищенных сокетов, упрощающие использовать сторонние решения
    • Поддержка управления подключениями для использования в многопоточных Приложения. Поддерживает установку максимальное количество подключений, а также максимальное количество подключений на хост. Обнаруживает и закрывает устаревшие соединения.
    • Автоматическая обработка файлов cookie для чтения Set-Cookie: заголовки из сервер и отправив их обратно в Cookie: заголовок, когда это необходимо.
    • Подключаемый механизм для настраиваемых политик cookie.
    • Запрашивать выходные потоки, чтобы избежать буферизации тела любого содержимого с помощью потоковая передача непосредственно в сокет для сервер.
    • Входные потоки ответа для эффективного чтения тела ответа потоковая передача прямо из сокета в сервер.
    • Постоянные соединения с использованием KeepAlive в HTTP / 1.0 и постоянство в HTTP / 1.1
    • Прямой доступ к коду ответа и заголовкам, отправляемым сервером.
    • Возможность устанавливать тайм-ауты соединения.
    • HttpMethods реализуют шаблон команд для параллельного запросы и эффективное повторное использование подключений.
    • Исходный код находится в свободном доступе под лицензией на программное обеспечение Apache.
100
ответ дан 24 November 2019 в 08:18
поделиться
JComboBox comboBox = new JComboBox();
comboBox.setUI(new BasicComboBoxUI() {
    @Override
    protected JButton createArrowButton() {
        return new JButton() {
            @Override
            public int getWidth() {
                return 0;
            }
        };
    }
});

Если getWidth () возвратит 0, это гарантирует, что:
а) кнопка не отображается
б) для него не зарезервировано место, что позволяет вводить все поле

. Я обнаружил, что мне нужно вызвать .setUI () через SwingUtilities.invokeLater () , но в зависимости от структуры вашего кода, вам может и не потребоваться.

Если вы хотите автозаполнение, добавьте некоторые элементы в поле со списком и используйте AutoCompleteDecorator.decorate (comboBox) . Как упоминалось ранее, класс AutoCompleteDecorator является частью SwingX .

Это может сделать ваш ящик странным при использовании другого L&F, поэтому вам придется выбрать, какой CombiBoxUI создать, чтобы получить правильный вид.

Если вы не хотите, чтобы раскрывающийся список отображался, когда в поле со списком ничего нет, также переопределите этот метод в BasicComboBoxUI:

11
ответ дан 24 November 2019 в 08:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: