2017-01-19 4 views
1

В настоящее время я работаю над github api. При попытке отправить простой HTTP GET с моим токен аутентификации в качестве параметра с помощью API Apache HTTP, консоль бросает это:Вызвано: org.apache.http.ProtocolException: целевой хост не указан, хотя его не искажено

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:107) 
at xyz.lexium.giapb.http.GIAPBHttp.sendGet(GIAPBHttp.java:25) 
at xyz.lexium.giapb.GIAPB.main(GIAPB.java:12) 
Caused by: org.apache.http.ProtocolException: Target host is not specified 
at org.apache.http.impl.conn.DefaultRoutePlanner.determineRoute(DefaultRoutePlanner.java:70) 
at org.apache.http.impl.client.InternalHttpClient.determineRoute(InternalHttpClient.java:124) 
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:183) 
... 4 more 

Вот мой текущий код:

package xyz.lexium.giapb.http; 

import java.util.ArrayList; 
import java.util.List; 

import org.apache.http.HttpEntity; 
import org.apache.http.NameValuePair; 
import org.apache.http.client.entity.UrlEncodedFormEntity; 
import org.apache.http.client.methods.CloseableHttpResponse; 
import org.apache.http.client.methods.HttpGet; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.impl.client.CloseableHttpClient; 
import org.apache.http.impl.client.HttpClients; 
import org.apache.http.message.BasicNameValuePair; 
import org.apache.http.util.EntityUtils; 

public class GIAPBHttp { 

public static final String baseUrl = "https://api.github.com"; 
private static final String USER_AGENT = "Mozilla/5.0"; 

// HTTP GET request 
public static void sendGet() throws Exception { 
    CloseableHttpClient httpclient = HttpClients.createDefault(); 
    HttpGet httpGet = new HttpGet("baseUrl"); 
    CloseableHttpResponse response1 = httpclient.execute(httpGet); 

    try { 
     System.out.println(response1.getStatusLine()); 
     HttpEntity entity1 = response1.getEntity(); 
     // responce 
     EntityUtils.consume(entity1); 
    } finally { 
     response1.close(); 
    } 

    HttpPost httpPost = new HttpPost(baseUrl); 
    List <NameValuePair> nvps = new ArrayList <NameValuePair>(); 
    nvps.add(new BasicNameValuePair("access_token", "cant_steal_this_(dododododo)")); 
    httpPost.setEntity(new UrlEncodedFormEntity(nvps)); 
    CloseableHttpResponse response2 = httpclient.execute(httpPost); 

    try { 
     System.out.println(response2.getStatusLine()); 
     HttpEntity entity2 = response2.getEntity(); 
     // responce 
     EntityUtils.consume(entity2); 
    } finally { 
     response2.close(); 
    } 
} 
} 

ДА, Я прочитали другие вопросы по этому вопросу. Но я изменил его. Это полный URL-адрес, поэтому другие не помогают

ответ

1

Вы пытаетесь получить доступ к ресурсу HTTPS, используя httpclient. Это вызывает ошибку протокола.

Доступ протокола HTTPS необходимо немного больше работы, как описано здесь - Ignoring SSL certificate in Apache HttpClient 4.3

2

Line 25

HttpGet httpGet = new HttpGet("baseUrl"); 

Должно быть

HttpGet httpGet = new HttpGet(baseUrl);