org.apache.http.ProtocolException: Target host is not specified

58,189

The error message is kind of misleading. You've provided a value that does not represent a complete URI

request = new HttpGet("trib.me/1lBFzSi");

It's missing a protocol.

Simply provide a complete URI

request = new HttpGet("http://trib.me/1lBFzSi");
Share:
58,189
ac11
Author by

ac11

Updated on May 12, 2020

Comments

  • ac11
    ac11 almost 4 years

    I have written a simple httprequest/response code and I am getting this below error. I have referenced httpclient, httpcore, common-codecs and common-logging in my classpath. I am very new to java and have no clue what is going on here. Please help me.

    Code:

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

    Error:

    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