Java 通过带有ProxyConnector的SOCKS5代理从服务器获取响应时发生NullPointerException

Java 通过带有ProxyConnector的SOCKS5代理从服务器获取响应时发生NullPointerException,java,proxy,apache-mina,Java,Proxy,Apache Mina,我在基于ApacheMina实现安全xmpp客户端时遇到问题。它应该支持一些功能,如HMAC等。。我任务中的一点是提供使用SOCKS5代理的能力。服务器端已经完成了,我有了不支持代理的工作代码。以下是我实现的构造函数: public class SecureConnector extends AbstractProxyIoHandler { private static final int PORT = PORT; private static final String HOSTNAME = H

我在基于ApacheMina实现安全xmpp客户端时遇到问题。它应该支持一些功能,如HMAC等。。我任务中的一点是提供使用SOCKS5代理的能力。服务器端已经完成了,我有了不支持代理的工作代码。以下是我实现的构造函数:

public class SecureConnector extends AbstractProxyIoHandler {
private static final int PORT = PORT;
private static final String HOSTNAME = HOSTNAME;
private NioSocketConnector nioConnector;
private  ProxyConnector connector;
private volatile int lastStreamID = 0;
private static Object mutex = new Object();
private List<MessageFilter> filters = new ArrayList<MessageFilter>();
private NotificationListener notificationListener;
public SecureConnector(NotificationListener notificationListener, InetSocketAddress proxyAddress) {
this.notificationListener = notificationListener;
nioConnector = new NioSocketConnector();
SocksProxyRequest pr = new SocksProxyRequest(
    SocksProxyConstants.SOCKS_VERSION_5,
    SocksProxyConstants.ESTABLISH_TCPIP_STREAM,
    new InetSocketAddress(HOSTNAME, PORT), "");
ProxyIoSession ps=new ProxyIoSession(proxyAddress, pr);
connector=new ProxyConnector(nioConnector);
connector.setHandler(this);
connector.getFilterChain().addLast("codec", new 
connector.getFilterChain().addFirst("sslfilter", getSSLFilter());
connector.setProxyIoSession(ps);}

@Override
public void proxySessionOpened(IoSession session)
{
    WriteFuture writeFuture = session.write(IoBuffer.wrap(new byte[]{0xFF}));
}

public ConnectFuture connect() {
return connector.connect();
}

@Override
public void exceptionCaught(IoSession session, Throwable cause) throws Exception {
cause.printStackTrace();
session.close(true);
}

@Override
public void messageReceived(IoSession session, Object message) throws Exception {
if (message instanceof Message) {
    Message msg = (Message) message;
    if (msg instanceof Close){
    session.close(true);
    return;
    }
}
NotificationListener是一种在服务器发出特殊命令后自动下载新证书的服务,但这不是问题的关键。因此,使用此选项后,我有以下错误:

[NioProcessor-2]ERROR org.apache.mina.proxy.AbstractProxylogicChandler -无法发送Socks请求:java.lang.NullPointerException 位于org.apache.mina.proxy.handlers.socks.Socks5LogicHandler.encodeAuthenticationPackage(Socks5LogicHandler.java:185) 位于org.apache.mina.proxy.handlers.socks.Socks5LogicHandler.WriterRequest(Socks5LogicHandler.java:282) 位于org.apache.mina.proxy.handlers.socks.Socks5LogicHandler.doHandshake(Socks5LogicHandler.java:86) 位于org.apache.mina.proxy.handlers.socks.Socks5LogicHandler.handleResponse(Socks5LogicHandler.java:433) 位于org.apache.mina.proxy.handlers.socks.Socks5LogicHandler.messageReceived(Socks5LogicHandler.java:318) 在org.apache.mina.proxy.filter.ProxyFilter.messageReceived上(ProxyFilter.java:164) 位于org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:542) 在org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1300(DefaultIoFilterChain.java:48) 在org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived上(DefaultIoFilterChain.java:943) 在org.apache.mina.core.filterchain.IoFilterAdapter.messageReceived上(IoFilterAdapter.java:109) 位于org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:542) 在org.apache.mina.core.filterchain.DefaultIoFilterChain.fireMessageReceived上(DefaultIoFilterChain.java:535) 位于org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:718) 位于org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:672) 位于org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:661) 位于org.apache.mina.core.polling.AbstractPollingIoProcessor.access$600(AbstractPollingIoProcessor.java:68) 位于org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:1130) 位于org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64) 位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 运行(Thread.java:745)

此错误在打开代理会话后立即发生。有人能帮我解决这个问题吗?我曾写信给ApacheMina支持部门,但没有收到任何答复

SecureConnector connector = new SecureConnector(new NotificationListener(service),proxyAddress);
    System.out.println("connector created");
    ConnectFuture connectFuture = connector.connect();
    connectFuture.await(TIMEOUT);
    if (!connectFuture.isConnected()) {
        throw new IOException("Couldn't connect to server!");
    }
    System.out.println("before getting session");
    final IoSession session = connectFuture.getSession();
    IoSessionConfig sessconf = session.getConfig();
    sessconf.setUseReadOperation(true);
    System.out.println("session configured");
    send(session, IoBuffer.wrap(new byte[]{0xFF}));
    System.out.println("byte sent");
    recieve(session);
    System.out.println("Connected to server.");