WURFL без сервлета

В моей базе данных у меня есть длинный список пользовательских агентов, для которых мне требуется их перевод, очень многообещающий инструмент - WURFL, но он не имеет поддержки gradle и не очень хорошо документирован. Все примеры, которые я мог восстановить, объясняли, как реализовать это с помощью Java-сервлета, но в моем случае у меня нет сервлета или http-запроса \ ответа, только длинный список пользовательских агентов, которые нуждаются в переводе, есть простой способ запросить базу данных WURFL с помощью простой Java-программы?

3 ответа

Лучшее решение - это скомпилировать jur-файл wurfl-cloud-client-java самостоятельно (Maven), его можно найти по адресу: https://github.com/WURFL/wurfl-cloud-client-java jar\maven\ отсутствует Gradle доступен в другом месте.

Затем импортируйте его в свой проект и выполните следующее:

@Test(groups = "unit")
public class CloudClientUserAgentQueryTest extends Loggable{

private static final String ua = "Mozilla/5.0 (iPad; CPU OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) CriOS/30.0.1599.12 Mobile/11A465 Safari/8536.25 (3B92C18B-D9DE-4CB7-A02A-22FD2AF17C8F)";

private ICloudClientManager ICloudClient;
private AbstractDevice device;
private String[] capabilities;
private String mobile;


@BeforeClass
public void setup() throws Exception {
    CloudClientLoader loader = new CloudClientLoader(null, "/DefaultTest.properties");
    ICloudClient = loader.getClientManager();
}

@BeforeMethod
public void setupDevice() {
    device = ICloudClient.getDeviceFromUserAgent(ua, capabilities);

    Object mobile = device.get("is_wireless_device");
    this.mobile = mobile != null ? mobile.toString() : "unknown";
}

@Test
public void testClient() {
    assertTrue(mobile.equals("true"));
}
}

Самый простой способ сделать это - просто использовать старый API Java WURFL, который может работать с простым исполняемым классом Java. Вам просто нужно поместить его в ваш classpath (или импортировать его с помощью maven, если вы его используете) и сделать что-то вроде этого:

public static void main(String[] args) {
    String ua = "Mozilla/5.0 (iPad; CPU OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) CriOS/30.0.1599.12 Mobile/11A465 Safari/8536.25 (3B92C18B-D9DE-4CB7-A02A-22FD2AF17C8F)";

  WURFLEngine engine = new GeneralWURFLEngine("path/to/wurfl.zip");

  Device device = engine.getDeviceForRequest(ua);
  System.out.println("Device id: " + device.getId());
  System.out.println("Capability preferred_markup: " + device.getCapability("preferred_markup"));
  System.out.println("Device name: " + device.getCapability("device_name"));
  System.out.println("Brand: " + device.getCapability("brand_name"));
}

Обратите внимание, что вам понадобится файл wurfl. Если у вас его нет (текущие версии файлов распространяются Scientiamobile по коммерческой лицензии), вышеупомянутый облачный клиент Java также может работать.

51Degrees Java API поддерживает автономную обработку списков User-Agents. Я видел объяснение того, как использовать эту функцию на их сайте.

Однако, поскольку большое количество пользовательских агентов содержат запятые, я бы предложил изменить разделитель выходного CSV-кода в коде с приведенной выше ссылки на другое, чтобы избежать путаницы.

Этот метод использует список User-Agent в качестве входных данных с одним User-Agent на строку.

Надеюсь, это поможет.

Другие вопросы по тегам