簡體   English   中英

我可以在Android項目中使用新版本的HttpClient嗎?

[英]Can I use a new version of HttpClient in my Android project?

我需要在Android項目中使用HttpClient 4.2.5(添加到類路徑中)。 問題是在執行時,Android采用在其API中注冊的默認HttpClient。 這沒有所有的類和方法,所以我有錯誤,如:

java.lang.NoSuchMethodError:org.apache.http.impl.client.DefaultHttpClient.setRedirectStrategy

如何解決此問題並使用類路徑中的版本執行並忽略嵌入式版本? 我試圖改變類路徑庫的順序 - 這不起作用。

聽起來Android正在通過其bootclasspath獲取HttpClient。 如果是這種情況,則類路徑上JAR的順序無關緊要。

如果這是“真正的Java(tm)”,你可以在啟動JVM時使用另一個bootclasspath來解決這個問題,但我不認為你可以在Android應用程序1中這樣做

我可以建議的最好的方法是,您可以查看HttpClient及其依賴項的源代碼,調整整個軟件包名稱,並構建新的JAR。 然后通過導入調整的包名稱修改您的應用程序代碼以使用新類。


1 - 如果他們允許應用程序指定備用bootclasspath,它將為惡意應用程序提供新的潛在攻擊向量。 我知道Android 應該在Davlik VM之外實現安全性,但是刪除VM中實現的第二道防線仍然是一個壞主意。

您可以使用HttpClientAndroidLib 至於現在它基於HttpClient 4.2.3,但我認為它足以滿足您的需求。 該lib的作者通過重命名原始HttpClient的所有包來繞過限制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM