一、该问题的重现步骤是什么?
这里使用baseAuth("name","pwd")没起到作用,没有加入到Header里面,不知道怎么用。
3. 另外httpRequest在调用https时需要使用证书时又如何使用?
二、你期待的结果是什么?实际看到的又是什么?
期待的结果:
1、baseAuth("name","pwd")可以进行加密后加入到header
2、httpRequest在调用https时需要使用证书时又如何使用?
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
BladeXAvue联合版2.5四、请提供详细的错误堆栈信息,这很重要。
五、若有更多详细信息,请在下面提供。
1. baseAuth的底层方法见下图,根据你传入的userName和password组成credential,然后放入Authorization请求头
2. 调用https没有差别,一样的
有没有加入到Header先把 log 开启,看下日志。
这个认证是 base auth 的方式,请确认你的认证方式是不是正确。
证书你可以参考下面的方式
InputStream isTrustCa = HttpRequestTest.class.getResourceAsStream("/cert/ca.jks");
InputStream isSelfCert = HttpRequestTest.class.getResourceAsStream("/cert/outgoing.CertwithKey.pkcs12");
KeyStore selfCert = KeyStore.getInstance("pkcs12");
selfCert.load(isSelfCert, "password".toCharArray());
KeyManagerFactory kmf = KeyManagerFactory.getInstance("sunx509");
kmf.init(selfCert, "password".toCharArray());
KeyStore caCert = KeyStore.getInstance("jks");
caCert.load(isTrustCa, "caPassword".toCharArray());
TrustManagerFactory tmf = TrustManagerFactory.getInstance("sunx509");
tmf.init(caCert);
SSLContext sc = SSLContext.getInstance("TLS");
TrustManager[] trustManagers = tmf.getTrustManagers();
X509TrustManager trustManager = (X509TrustManager) trustManagers[0];
sc.init(kmf.getKeyManagers(), trustManagers, (SecureRandom) null);
// a. 全局配置证书
OkHttpClient.Builder builder = new OkHttpClient.Builder()
.sslSocketFactory(sc.getSocketFactory(), trustManager)
.hostnameVerifier(TrustAllHostNames.INSTANCE);
HttpRequest.setHttpClient(builder.build());
// b. 单次请求配置证书
HttpRequest.get("https://123.xxx")
.useConsoleLog(LogLevel.BODY)
.sslSocketFactory(sc.getSocketFactory(), trustManager)
.disableSslValidation()
.execute()
.asString();
一般建议配置单次请求的证书。
扫一扫访问 Blade技术社区 移动端