httpRequest如何加入认证信息

Blade 未结 2 1339
507804
507804 2020-08-08 15:11

一、该问题的重现步骤是什么?

  1.  image.png

  2. 这里使用baseAuth("name","pwd")没起到作用,没有加入到Header里面,不知道怎么用。

    3. 另外httpRequest在调用https时需要使用证书时又如何使用?



二、你期待的结果是什么?实际看到的又是什么?

期待的结果:

1、baseAuth("name","pwd")可以进行加密后加入到header

2、httpRequest在调用https时需要使用证书时又如何使用?


三、你正在使用的是什么产品,什么版本?在什么操作系统上?

BladeXAvue联合版2.5

四、请提供详细的错误堆栈信息,这很重要。


五、若有更多详细信息,请在下面提供。

2条回答
  •  如梦技术
    2020-08-11 09:08

    1.  有没有加入到Header先把 log 开启,看下日志。

    2. 这个认证是 base auth 的方式,请确认你的认证方式是不是正确。

    3. 证书你可以参考下面的方式


    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();


    一般建议配置单次请求的证书。

提交回复