You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 11:22:08