如何在B4J的HttpJob中实现类似curl --insecure的功能?
解决B4J HttpJob SSL握手异常(跳过证书验证)
你的代码里已经初始化了OkHttpClient.InitializeAcceptAll(这就是实现跳过证书验证的核心方法,对应curl的--insecure参数),但问题在于没有把这个自定义客户端绑定到HttpJob对象上,导致HttpJob仍然使用默认的严格验证客户端,所以握手异常依旧存在。
修改后的完整代码如下:
Sub GetDataFromApi(serverName As String, c_type As String, endpoint As String, token As String) server_name = serverName url_host = endpoint Dim http As HttpJob Dim client As OkHttpClient client.InitializeAcceptAll("MyUserAgent") http.Initialize("", Me) ' 关键步骤:将跳过证书验证的自定义客户端绑定到HttpJob http.Client = client http.GetRequest.InitializeGet(endpoint) http.GetRequest.SetHeader("Authorization", token) http.GetRequest.SetHeader("Content-Type", c_type) http.GetRequest.Timeout = 30000 http.GetRequest.SetHeader("Connection", "close") http.GetRequest.SetHeader("User-Agent", "MyUserAgent") http.Download(endpoint) Wait For (http) JobDone(http As HttpJob) If http.Success Then Log(http.GetString) Else Log("Error: " & http.ErrorMessage) End If http.Release End Sub
核心说明
OkHttpClient.InitializeAcceptAll会创建一个忽略SSL证书有效性的客户端实例- 必须通过
http.Client = client将该实例赋值给HttpJob,否则HttpJob会使用默认的证书验证逻辑,无法跳过校验
内容的提问来源于stack exchange,提问作者Ardean Angkasa
相关产品推荐
相关产品推荐

