2015-11-23 28 views
-1

在我的數據庫中,我有一長串的用戶代理,我需要它們的翻譯,一個非常有前途的工具是WURFL,但它沒有gradle支持並且沒有很好的記錄。 我可以恢復的所有示例都解釋瞭如何使用java servlet實現它,但在我的情況下,我沒有servlet或http請求\響應只是需要翻譯的一長串用戶代理,是否有一個簡單的使用簡單的java程序查詢WURFL數據庫的方法?沒有servlet的WURFL

回答

1

最好的解決方案是自己編譯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")); 
} 
} 
-1

51Degrees的Java API支持用戶代理的列表的離線處理。我看到how to use this feature on their website的解釋。

但是,由於大量用戶代理包含逗號,我建議將代碼中的輸出CSV分隔符從上述鏈接更改爲其他內容以避免混淆。

此方法使用用戶代理列表作爲每行一個用戶代理的輸入。

希望有所幫助。

+0

謝謝,但我需要使用WURFL之一。 – Adi

0

最簡單的方法就是使用普通的舊WURFL Java API,它可以使用簡單的可執行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也可以工作。