HttpClient 4.3有三个静态变量org.apache.http.conn.ssl.SSLConnectionSocketFactory:
将依赖项升级到HttpClient的4.4版时,我看到所有上述常量都已弃用.JavaDoc中的弃用说明提到要使用org.apache.http.conn.ssl.DefaultHostnameVerifier.阅读文档,我认为这DefaultHostnameVerifier是一个直接替代STRICT_HOSTNAME_VERIFIER.这也ALLOW_ALL__HOSTNAME_VERIFIER很容易实现:
package org.wiztools.restclient.http;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLSession;
/**
*
* @author subwiz
*/
public class AllowAllHostnameVerifier implements HostnameVerifier {
@Override
public boolean verify(String string, SSLSession ssls) {
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
STRICT_HOSTNAME_VERIFIER和BROWSER_COMPATIBLE_HOSTNAME_VERIFIER(来自JavaDoc)之间有一个微妙的区别:
BROWSER_COMPATIBLE和STRICT之间的唯一区别是带有BROWSER_COMPATIBLE的通配符(例如"*.foo.com")匹配所有子域,包括"abfoo.com".
我们是否有一个现成BROWSER_COMPATIBLE的httpclient 4.4主机名验证程序?
根据commander.js自述文件,我可以指定默认命令:
var program = ...;
program
...
.command('list', 'list packages installed', {isDefault: true})
.parse(process.argv);
Run Code Online (Sandbox Code Playgroud)
在我的应用程序中,我使用.command()不带描述参数的.action(). 我尝试将第二个参数null和第三个选项传递给isDefault:true. 但它似乎不起作用:
program.command('help', null, {isDefault:true})
.description('display help information.')
.action(function(){
program.outputHelp();
});
Run Code Online (Sandbox Code Playgroud)
如何传递isDefault:true给命令.action()?