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 端口上,所以尝试使用这个端口与你的服务器通信。
在你给定的 link 中,我可以看到服务器 运行 在端口 8000 上。
new InetSocketAddress(8000)
String url = "http://127.0.0.1:8000/test"
示例本身解释了如何连接。
编译并执行。要访问本地服务器,请在
打开浏览器
http://localhost:8000/test.
我从这个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 端口上,所以尝试使用这个端口与你的服务器通信。
在你给定的 link 中,我可以看到服务器 运行 在端口 8000 上。
new InetSocketAddress(8000)
String url = "http://127.0.0.1:8000/test"
示例本身解释了如何连接。 编译并执行。要访问本地服务器,请在
打开浏览器 http://localhost:8000/test.