我在我的Android應用中使用Google's HTTP Client for Java。在我們進行質量檢查測試時,我的服務器暫時使用自簽名證書。我們將有一個正確簽名的證書當我們發佈,但現在我只需要忽略...用於Java的Google Http客戶端:忽略java.security.cert.CertPathValidatorException:未找到認證路徑的信任錨點
CertPathValidatorException: Trust anchor for certification path not found.
...錯誤信息,告訴API來繼續處理HTTP請求/響應。
我無法在Google的文檔中找到任何可禁用此檢查的地方。我發現了其他apis的幾個StackOverflow帖子,但沒有發現Google HTTP客戶端。任何幫助?
import com.google.api.client.http.GenericUrl;
import com.google.api.client.http.HttpRequest;
import com.google.api.client.http.HttpRequestFactory;
import com.google.api.client.http.HttpRequestInitializer;
import com.google.api.client.http.HttpResponse;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.http.UrlEncodedContent;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.JsonObjectParser;
import com.google.api.client.json.jackson2.JacksonFactory;
import com.google.api.client.util.Maps;
import com.google.api.client.util.escape.CharEscapers;
...
static final HttpTransport HTTP_TRANSPORT = new NetHttpTransport();
HttpRequestFactory requestFactory =
HTTP_TRANSPORT.createRequestFactory(new HttpRequestInitializer() {
@Override
public void initialize(HttpRequest request) {
request.setParser(new JsonObjectParser(JSON_FACTORY));
request.setConnectTimeout(defaultTimeoutSeconds()*1000);
request.setReadTimeout(defaultTimeoutSeconds()*1000);
}
});
什麼是「Google的Java客戶端」?你的意思是Android SDK中的「HttpClient」API(並且已經停用了一段時間)?你的意思是提供一個更新版本的Apache HttpClient類的獨立庫嗎?你的意思是別的嗎?無論如何,在Android 7.0+上,您可以使用網絡安全配置向Android教授您的自簽名證書:https://developer.android.com/training/articles/security-config.html – CommonsWare
我使用的是com.google .api.client.http。*位於https://developers.google.com/api-client-library/java/ –
我的QA測試人員將測試Android 5.0+,因此我無法使用7.0+的解決方案,但我一定會通讀這篇文章來了解未來的知識! –