【问题标题】:HttpClient exception: java.lang.IllegalArgumentException: host parameter is nullHttpClient 异常:java.lang.IllegalArgumentException:主机参数为空
【发布时间】:2013-04-24 10:19:59
【问题描述】:

我有下一个代码

    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);

在某些情况下(在某些主机上)我得到 ​​p>

java.lang.IllegalArgumentException: host parameter is null"

关于 client.executeMethod 调用。

为什么会发生这种情况?

【问题讨论】:

  • 当我没有在我的 URL 前写“http://”时收到此错误。也许你也应该试试
  • 目前我调试了代码。原因是主机未设置为 HostConfiguration,但已设置 proxyHost。那么我应该在设置 proxyHost 时设置主机还是这是错误?
  • 这种情况下不需要HostConfiguration,看这个教程:hc.apache.org/httpclient-legacy/tutorial.html

标签: java apache http


【解决方案1】:

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

您必须在主机前面添加协议,例如HTTP:// 或您想使用的任何内容。 根据this blog article 的说法,可能还有其他情况会发生这种情况,但setHostConfiguration 已被弃用,因此这只适用于遗留代码。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      这是一个写代理的例子 http://svn.apache.org/viewvc/httpcomponents/oac.hc3x/trunk/src/examples/ProxyTunnelDemo.java?view=co 在我的情况下,问题在于 hostConfiguration 创建

      【讨论】:

        猜你喜欢
        • 2014-06-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-18
        • 1970-01-01
        相关资源
        最近更新 更多