详解Java实现HTTP请求的三种方式
HTTP请求是平时开发过程中经常用到的技术,Java语言也提供了多种方式实现HTTP请求。本文主要介绍Java实现HTTP请求的三个方式:URLConnection、HttpClient、OkHttp,分别详细说明其使用方法和注意事项。
使用URLConnection实现HTTP请求
发送GET请求
发送GET请求的代码如下:
String url = "http://www.example.com/";
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
System.out.println("GET Response Code :: " + responseCode);
这段代码中,我们首先创建一个URL对象,然后创建一个HttpURLConnection对象,并设置请求方法为GET。最后可以通过getResponseCode()方法获取服务器返回的状态码,打印出来以供查看。
发送POST请求
发送POST请求的代码如下:
String url = "http://www.example.com/";
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
String urlParameters = "param1=value1¶m2=value2";
con.setDoOutput(true);
DataOutputStream wr = new DataOutputStream(con.getOutputStream());
wr.writeBytes(urlParameters);
wr.flush();
wr.close();
int responseCode = con.getResponseCode();
System.out.println("POST Response Code :: " + responseCode);
这段代码中,我们首先创建一个URL对象,然后创建一个HttpURLConnection对象,并设置请求方法为POST。接着将参数以字符串的形式拼接起来,通过setDoOutput()方法将输出流开启,并将参数通过DataOutputStream的writeBytes()方法写入输出流。最后同样可以通过getResponseCode()方法获取服务器返回的状态码。
使用HttpClient实现HTTP请求
HttpClient是Apache提供的一个HTTP客户端工具包,比URLConnection更加易用。
发送GET请求
发送GET请求的代码如下:
String url = "http://www.example.com/";
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet(url);
HttpResponse response = client.execute(request);
System.out.println("GET Response Code :: " + response.getStatusLine().getStatusCode());
这段代码中,我们首先创建一个HttpClient对象,然后创建一个HttpGet对象,并将URL设置到该对象中。接着使用execute()方法发送请求,并通过HttpResponse对象获取服务器返回的状态码。
发送POST请求
发送POST请求的代码如下:
String url = "http://www.example.com/";
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(url);
List<NameValuePair> urlParameters = new ArrayList<>();
urlParameters.add(new BasicNameValuePair("param1", "value1"));
urlParameters.add(new BasicNameValuePair("param2", "value2"));
post.setEntity(new UrlEncodedFormEntity(urlParameters));
HttpResponse response = client.execute(post);
System.out.println("POST Response Code :: " + response.getStatusLine().getStatusCode());
这段代码中,我们首先创建一个HttpClient对象,然后创建一个HttpPost对象,并将URL设置到该对象中。接着将参数以NameValuePair的形式添加进集合中,再通过UrlEncodedFormEntity将集合变为一个可以写入输出流的实体类,最后用setEntity()方法将实体类传入。最后同样通过HttpResponse对象获取服务器返回的状态码。
使用OkHttp实现HTTP请求
OkHttp是由Square公司提供的一个HTTP客户端工具包,相比HttpClient拥有更加强大的功能和更高的性能。
发送GET请求
发送GET请求的代码如下:
String url = "http://www.example.com/";
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(url)
.build();
Response response = client.newCall(request).execute();
System.out.println("GET Response Code :: " + response.code());
这段代码中,我们首先创建一个OkHttpClient对象,然后使用Request.Builder()构建一个Request对象,并将URL设置到该对象中。接着使用newCall()方法发送请求,并通过Response对象获取服务器返回的状态码。
发送POST请求
发送POST请求的代码如下:
String url = "http://www.example.com/";
OkHttpClient client = new OkHttpClient();
RequestBody formBody = new FormBody.Builder()
.add("param1", "value1")
.add("param2", "value2")
.build();
Request request = new Request.Builder()
.url(url)
.post(formBody)
.build();
Response response = client.newCall(request).execute();
System.out.println("POST Response Code :: " + response.code());
这段代码中,我们首先创建一个OkHttpClient对象,然后使用FormBody.Builder()构建一个RequestBody对象,并将参数以键值对的形式往其中添加。接着使用Request.Builder()构建一个Request对象,并将RequestBody对象和URL设置到该对象中。最后同样使用newCall()方法发送请求,并通过Response对象获取服务器返回的状态码。
总结
本文分别介绍了Java实现HTTP请求的三个方式:URLConnection、HttpClient、OkHttp,并且分别展示了这三种方式发送GET和POST请求的代码。对比起来,OkHttp在性能和易用性方面表现更好,可以在实际开发中考虑使用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解java实现HTTP请求的三种方式 - Python技术站