通过代理服务器查找Whois:java.lang.IllegalArgumentException:代理无效

通过代理服务器查找Whois:java.lang.IllegalArgumentException:代理无效,java,proxy,whois,Java,Proxy,Whois,我尝试过这个…给了我一个java.lang.IllegalArgumentException:Invalid Proxy。 getter从文本文件填充代理和端口 //Imports import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.net.*; impor

我尝试过这个…给了我一个
java.lang.IllegalArgumentException:Invalid Proxy
。 getter从文本文件填充代理和端口

    //Imports
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;
    import java.io.IOException;
    import java.net.*;
    import java.util.ArrayList;

    import org.apache.commons.net.whois.WhoisClient;

    public void  whoisCheck(String host) {
        SocketAddress addr = new InetSocketAddress(getProxy(), getPort)
        Proxy useProxy = new Proxy(Proxy.Type.HTTP, addr);

        WhoisClient whoisClient = new WhoisClient();
        whoisClient.setProxy(useProxy);
        whoisClient.connect(IANA_WHOIS_SERVER, WHOIS_PORT);
        tmpStr = whoisClient.query(host);
        whoisClient.disconnect();
    }

whois
是通过TCP端口43而不是HTTP/HTTPS运行的协议。它没有代理的概念

出于这两个原因,请不要使用HTTP库连接到
whois
服务器,因为这永远不会在开箱即用的情况下正常工作。你会给自己制造太多的问题。相反,在编程语言中使用特定的
whois
库,或者基本上在端口43上打开一个TCP套接字,在上面写下您的查询,通过CR+LF完成,并将服务器的回复作为一团文本读回


如果你需要隐藏你的IP地址,你需要求助于典型的IP级别的“重定向”,比如隧道或SOCKS库。

你的问题中缺少重要的部分:导入和到WhoisClient库的链接。因为
setProxy()
所以
newproxy()
抛出这个问题是合乎逻辑的(我不得不猜测,因为你没有说异常是在哪里引发的。)查看我们可以看到“
IllegalArgumentException-当类型和地址不兼容时”
getProxy()
”返回的地址是什么?错误是在whoiclient.connect(IANA\u WHOIS\u服务器,WHOIS\u端口)上引发的;返回的地址为23.19.34.15,端口为8800