簡単な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
エラーメッセージは誤解を招くようなものです。完全なURIを表していない値を指定しました
request = new HttpGet("trib.me/1lBFzSi");
プロトコルがありません。
完全なURIを指定するだけです
request = new HttpGet("http://trib.me/1lBFzSi");
このエラーは、おそらく間違ったURLが原因です。 URLを確認してください: