java HTTP 服务器客户端示例

java HTTP server client example

我从这个link得到了一个http服务器:http://www.rgagnon.com/javadetails/java-have-a-simple-http-server.html(第一个例子)

我 运行 它运行良好。然后我用下面的小代码作为客户端与服务端通信:

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)

我有办法解决这个问题吗?

您需要 URL 的协议。例如:

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

假设它是 运行 在端口 80 上。如果它是 运行 在另一个端口上,那么也包括该端口。例如:

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

您的 Apache 服务器 运行 在 80 上吗?

当你附上服务器的源代码时,你的服务器 运行 似乎在 8000 端口上,所以尝试使用这个端口与你的服务器通信。

http://127.0.0.1:8000/info

在你给定的 link 中,我可以看到服务器 运行 在端口 8000 上。

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

示例本身解释了如何连接。 编译并执行。要访问本地服务器,请在

打开浏览器
 http://localhost:8000/test.