HttpClient异常:java.lang.IllegalArgumentException:主机参数为null

HttpClient异常:java.lang.IllegalArgumentException:主机参数为null,java,apache,http,Java,Apache,Http,我有下一个密码 URL targetUrl = ... HttpClient client = new HttpClient(connectionManager); GetMethod getMethod = new GetMethod(); getMethod.setPath(targetUrl.getPath()); HostConfiguration hostConfiguration = getConfiguration(targetUrl) /

我有下一个密码

    URL targetUrl = ...
    HttpClient client = new HttpClient(connectionManager);
    GetMethod getMethod = new GetMethod();
    getMethod.setPath(targetUrl.getPath());

    HostConfiguration hostConfiguration = getConfiguration(targetUrl) //unknown lib code

    client.executeMethod(hostConfiguration, getMethod);
在某些情况下(在某些主机上),我会

java.lang.IllegalArgumentException:主机参数为空“

在client.executeMethod调用中


为什么会发生这种情况?

这是代理的一个写示例
在我的例子中,问题是在主机配置创建中

错误消息具有误导性

您必须在主机前面添加协议,例如
HTTP://
或任何您想要使用的内容。 根据,这种情况可能发生在其他情况下,但
setHostConfiguration
已被弃用,因此这仅适用于旧代码


客户端代码应该更早地捕获它,而不是在系统中失败得如此之深,错误的数据怎么会走得那么远?

此错误表示您使用的url不完整或没有协议。例如
String url=“google.com”
。将其更改为
String url=”http://google.com“
。它现在可以工作了

当我没有写“http://“在我的URL前面。也许你应该试试我调试的代码。原因是主机未设置为HostConfiguration,但设置了proxyHost。所以,我应该在设置proxyHost时设置主机还是这是一个bug?在这种情况下,您不需要主机配置,请参阅本教程: