接口调用报错:Cannot find the specified class com.ibm.websphere.ssl.protocol.SSLSocketFactory

博客内容讲述了在调用接口时遇到java.net.SocketException,原因是ClassNotFoundException,找不到com.ibm.websphere.ssl.protocol.SSLSocketFactory类。解决方案包括检查环境配置和使用Apache HttpClient绕过SSL证书认证的方法,提供了一个自定义的SSLClient类和相关代码示例。
Llama Factory

Llama Factory

模型微调
LLama-Factory

LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。通过 LLaMA Factory,可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调

 整体报错信息为:

java.net.SocketException: java.lang.ClassNotFoundException: Cannot find the specified class com.ibm.websphere.ssl.protocol.SSLSocketFactory 

 

1.检查是否是环境的问题,检查jdk等信息

2.若环境无误,换一种调用方式,代码如下:

package nc.pub.tool.trans;

//import java.io.BufferedReader;
//import java.io.IOException;
//import java.io.InputStream;
//import java.io.InputStreamReader;
//import java.io.OutputStream;
//import java.io.OutputStreamWriter;
//import java.io.PrintWriter;
//import java.net.HttpURLConnection;
//import java.net.URL;
//import java.net.URLConnection;
//import java.nio.charset.Charset;

import java.nio.charset.Charset;

import nc.vo.pub.BusinessException;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.util.EntityUtils;

/**
 * 调用http接口工具类
 * 
 */
public class HttpConnection {

    /**
     * 发送 post请求
     */
    @SuppressWarnings("resource")
    public String sendPost(String json, String URL)  throws BusinessException{
        String obj = null;
        // 创建默认的httpClient实例.
        HttpClient httpclient = null;
        // 创建httppost
        HttpPost httppost = new HttpPost(URL);
//        httppost.addHeader("Content-type", "application/json; charset=utf-8");
        httppost.setHeader("Accept", "application/json");
        httppost.setHeader("x-zop-ns", "budget");
        httppost.setHeader("accept", "*/*");
        httppost.setHeader("connection", "Keep-Alive");
        httppost.setHeader("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
        httppost.setHeader("Content-Type","application/json;charset=utf-8");
        
        try {
            httpclient = new SSLClient();
            StringEntity s = new StringEntity(json, Charset.forName("UTF-8")); // 对参数进行编码,防止中文乱码
            s.setContentEncoding("UTF-8");
            httppost.setEntity(s);
            HttpResponse response = httpclient.execute(httppost);
            // 获取相应实体
            HttpEntity entity = response.getEntity();
            if (entity != null) {
                obj = EntityUtils.toString(entity, "UTF-8");
            }
        } catch (Exception e) {
            e.printStackTrace();
            throw new BusinessException(e.getMessage());
        }
        System.out.println("输出返回信息:" + obj.toString());
        return obj.toString();
    }

}

 

 

 

 

 

package nc.pub.tool.trans;

import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;

import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;

import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.impl.client.DefaultHttpClient;


/**
 * 绕过https证书认证的方法
 *
 */
public class SSLClient extends DefaultHttpClient{  

    public SSLClient() throws Exception{  

        super();  

        SSLContext ctx = SSLContext.getInstance("TLS");  

        X509TrustManager tm = new X509TrustManager() {  

                @Override  

                public void checkClientTrusted(X509Certificate[] chain,  

                        String authType) throws CertificateException {  

                }  

                @Override  

                public void checkServerTrusted(X509Certificate[] chain,  

                        String authType) throws CertificateException {  

                }  

                @Override  

                public X509Certificate[] getAcceptedIssuers() {  

                    return null;  

                }  

        };  

        ctx.init(null, new TrustManager[]{tm}, null);  

        SSLSocketFactory ssf = new SSLSocketFactory(ctx,SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);  

        ClientConnectionManager ccm = this.getConnectionManager();  

        SchemeRegistry sr = ccm.getSchemeRegistry();  

        sr.register(new Scheme("https", 443, ssf));  

    }  

}  

其中导入jar为:

httpcore-4.4.1

httpclient-4.4.1

自己网上下载一下

您可能感兴趣的与本文相关的镜像

Llama Factory

Llama Factory

模型微调
LLama-Factory

LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。通过 LLaMA Factory,可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调

### Spyder 报错The system cannot find the path specified”的解决方案 当遇到 Spyder 中出现 `The system cannot find the path specified` 的错误时,通常是因为某些依赖项缺失或者配置不正确引起的。以下是针对该问题的具体分析和解决方法: #### 1. 安装或更新 `spyder_kernels` 包 Spyder 使用 `spyder_kernels` 来运行其内核功能。如果这个包未安装或版本过旧,则可能导致路径找不到的错误。可以通过以下命令安装或升级它: ```bash pip install spyder_kernels ``` 或者,如果你正在使用 Conda 虚拟环境,可以尝试: ```bash conda install spyder-kernels ``` 完成安装后,请重启 Spyder 应用程序以使更改生效[^1]。 #### 2. 检查并修复 PyZMQ 版本冲突 另一个常见原因是 `pyzmq` 的版本问题。有时高版本的 `pyzmq` 可能与当前使用的 Python 或其他库存在兼容性问题。建议先卸载现有版本再重新安装较低版本: ```bash pip uninstall pyzmq pip install pyzmq==22.3.0 ``` 确保所选版本适合你的操作系统和 Python 环境设置[^2]。 #### 3. 验证虚拟环境中必要的 Jupyter 组件是否存在 对于基于 Conda 创建的虚拟环境而言,缺少部分核心组件也可能引发此类异常行为。执行如下指令确认是否有遗漏项目需补充加载: ```bash jupyter --version ``` 假如发现任何必需模块尚未加入至目标 env 下的话(比如 ipykernel),则可通过 pip 进行单独追加部署: ```bash pip install jupyterlab ipykernel ``` #### 4. 修改 Windows 用户目录名称 (仅适用于特定情况) 在极少数情况下,Windows 上含有中文字符的用户名可能会干扰软件正常解析工作区位置从而抛出上述警告消息。对此可考虑调整登录账号对应的存储根节点标签为纯英文字母组合形式。具体做法参照官方文档指引完成切换过程后再测试效果如何改善[^3]。 综上所述,按照以上几个方面逐一排查应该能够有效缓解乃至彻底消除“The system cannot find the path specified”这一困扰现象的发生几率。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值