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

问题描述 投票:0回答:4

我有下一个代码

    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 调用上。

为什么会发生这种情况?

java apache http
4个回答
8
投票

错误消息具有误导性...

您必须在主机前面添加协议,例如

HTTP://
或任何您想使用的内容。 根据这篇博客文章,在其他情况下也可能会发生这种情况,但
setHostConfiguration
已被弃用,因此这只适用于遗留代码。

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


1
投票

此错误意味着您使用的网址不完整或没有协议。例如

String url ="google.com"
。将其更改为
String url="http://google.com"
。现在就可以工作了


0
投票

这是一个代理的编写示例 http://svn.apache.org/viewvc/httpcomponents/oac.hc3x/trunk/src/examples/ProxyTunnelDemo.java?view=co 就我而言,问题在于主机配置创建


0
投票

当使用的

HttpClient
HttpMethod
没有正确设置目标主机或
URL
时,通常会发生这种情况。

就我而言,

URL
未正确设置,所以它是
NULL

仔细检查

URL
是否设置正确,而不是从外部源动态创建。即就我而言,它是通过
OpenSearch
数据。

或者出于测试目的,您可以尝试对您希望的

URL
进行硬编码,以确保这仅仅是因为
URL
问题。

© www.soinside.com 2019 - 2024. All rights reserved.