org.apache.http.ProtocolException:未指定目标主机
Posted
技术标签:
【中文标题】org.apache.http.ProtocolException:未指定目标主机【英文标题】:org.apache.http.ProtocolException: Target host is not specified 【发布时间】:2014-07-27 21:20:23 【问题描述】:我编写了一个简单的 httprequest/response 代码,但出现以下错误。我在类路径中引用了 httpclient、httpcore、common-codecs 和 common-logging。我对java很陌生,不知道这里发生了什么。请帮我。
代码:
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.HttpResponse;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.Header;
import org.apache.http.HttpHeaders;
public class UnshorteningUrl
public static void main(String[] args) throws Exception
HttpGet request=null;
HttpClient client = HttpClientBuilder.create().build();
try
request = new HttpGet("trib.me/1lBFzSi");
HttpResponse httpResponse=client.execute(request);
Header[] headers = httpResponse.getHeaders(HttpHeaders.LOCATION);
// Preconditions.checkState(headers.length == 1);
String newUrl = headers[0].getValue();
System.out.println("new url" + newUrl);
catch (IllegalArgumentException e)
// TODO: handle exception
finally
if (request != null)
request.releaseConnection();
错误:
Exception in thread "main" org.apache.http.client.ClientProtocolException
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:186)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:106)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:57)
at UnshorteningUrl.main(UnshorteningUrl.java:26)
Caused by: org.apache.http.ProtocolException: Target host is not specified
at org.apache.http.impl.conn.DefaultRoutePlanner.determineRoute(DefaultRoutePlanner.java:69)
at org.apache.http.impl.client.InternalHttpClient.determineRoute(InternalHttpClient.java:124)
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:183)
... 4 more
【问题讨论】:
【参考方案1】:错误信息有点误导。您提供的值不代表完整的 URI
request = new HttpGet("trib.me/1lBFzSi");
它缺少协议。
只需提供完整的 URI
request = new HttpGet("http://trib.me/1lBFzSi");
【讨论】:
【参考方案2】:此错误可能是由于错误的 url 造成的。 检查网址:
-
缺少协议;
url参数编码;
【讨论】:
【参考方案3】:就我而言,我解决了在开头添加 / 的问题: request = new HttpGet("/trib.me/1lBFzSi");
【讨论】:
以上是关于org.apache.http.ProtocolException:未指定目标主机的主要内容,如果未能解决你的问题,请参考以下文章