2016-07-22 70 views
-2

我從這個鏈接http服務器:http://www.rgagnon.com/javadetails/java-have-a-simple-http-server.html(第一個例子)Java的HTTP服務器客戶端的例子

我運行它的它的優良工作。然後我用下面的小代碼作爲客戶端與服務器進行通信:

import java.io.IOException; 

import org.apache.http.HttpResponse; 
import org.apache.http.client.ClientProtocolException; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.methods.HttpGet; 
import org.apache.http.impl.client.HttpClientBuilder; 

public class Main { 
    public static void main(String argv[]) throws ClientProtocolException, IOException 
    { 
     String url = "127.0.0.1/test"; 

     HttpClient client = HttpClientBuilder.create().build(); 
     HttpGet request = new HttpGet(url); 


     HttpResponse response = client.execute(request); 
     System.out.println("http response = "+response.toString()); 
    } 
} 

我執行它,但我得到這個異常:

Exception in thread "main" java.lang.IllegalStateException: Target host is null 
    at org.apache.http.util.Asserts.notNull(Asserts.java:46) 
    at org.apache.http.impl.client.InternalHttpClient.determineRoute(InternalHttpClient.java:125) 
    at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185) 
    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 httpClient.Main.main(Main.java:20) 

有一個想法,我怎麼能解決這個問題?

+0

嘗試打開瀏覽器,通過'http:// 127.0.0.1/info' – Berger

回答

1

您的apache服務器是否在80上運行?

當您連接服務器的源代碼時,它似乎是您的服務器在8000端口上運行,因此請嘗試使用此端口與您的服務器進行通信。

http://127.0.0.1:8000/info

+0

謝謝你的回答,似乎那是固定的我得到的消息顯示: HTTP響應= HTTP/1.1 200 OK [內容長度:30,日期:2016年7月22日星期五08:45:13 GMT] 你知道我怎麼可以從服務器發送的消息響應嗎? –

+0

我用ResponseHandler來獲取服務器發送的消息。 再次感謝您的回答。 –

0

您需要URL的協議。例如:

String url = "http://127.0.0.1/info"; 

假設它是在端口80上運行。如果另一個端口上運行,則包括的端口太。例如:

String url = "http://127.0.0.1:8080/info"; 
1

在你給出的鏈接我可以看到服務器在端口8000

new InetSocketAddress(8000) 
String url = "http://127.0.0.1:8000/test" 

實例本身說明如何連接運行。 編譯並執行。要訪問本地服務器,在

http://localhost:8000/test.