在我的数据库中,我有一长串需要翻译它们的用户代理,一个非常有前途的工具是 WURFL,但它没有 gradle 支持,并且没有很好的文档记录。我可以恢复的所有示例都解释了如何使用 java servlet 实现它,但在我的情况下,我没有 servlet 或 http 请求\响应,只有一长串需要翻译的用户代理,有没有简单的方法使用简单的java 程序查询WURFL 数据库?
问问题
160 次
3 回答
2
最好的解决方案是自己编译 wurfl-cloud-client-java jar(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"));
}
}
于 2015-11-24T13:23:33.517 回答
1
最简单的方法就是使用普通的旧 WURFL Java API,它可以与一个简单的可执行 Java 类一起工作。你只需要把它放在你的类路径中(或者用 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 也可以工作。
于 2017-01-11T14:07:11.150 回答
-2
51Degrees Java API 支持离线处理用户代理列表。我在他们的网站上看到了有关如何使用此功能的说明。
但是,由于大量用户代理包含逗号,我建议将代码中的输出 CSV 分隔符从上述链接更改为其他内容以避免混淆。
此方法使用用户代理列表作为输入,每行一个用户代理。
希望有帮助。
于 2015-11-24T13:43:03.640 回答