我有下一个代码
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: host parameter is null"
在 client.executeMethod 调用上。
为什么会发生这种情况?
错误消息具有误导性...
您必须在主机前面添加协议,例如
HTTP://
或任何您想使用的内容。
根据这篇博客文章,在其他情况下也可能会发生这种情况,但setHostConfiguration
已被弃用,因此这只适用于遗留代码。
客户端代码应该更早地捕获它,而不是在系统中如此深入地失败,错误的数据怎么会走那么远?
此错误意味着您使用的网址不完整或没有协议。例如
String url ="google.com"
。将其更改为String url="http://google.com"
。现在就可以工作了
这是一个代理的编写示例 http://svn.apache.org/viewvc/httpcomponents/oac.hc3x/trunk/src/examples/ProxyTunnelDemo.java?view=co 就我而言,问题在于主机配置创建
当使用的
HttpClient
或 HttpMethod
没有正确设置目标主机或 URL
时,通常会发生这种情况。
就我而言,
URL
未正确设置,所以它是NULL
。
仔细检查
URL
是否设置正确,而不是从外部源动态创建。即就我而言,它是通过 OpenSearch
数据。
或者出于测试目的,您可以尝试对您希望的
URL
进行硬编码,以确保这仅仅是因为 URL
问题。