C/S 客户端+服务器
一,HttpUrlConnection
在客户端用于访问服务器去提交请求, 在从服务器获取响应的类
GET方式 步骤:
1, 得到URL对象
URL url = new URL("path......");
2, 根据URL对象打开HttpUrlConnection对象
HttpUrlConnection conn = (HttpUrlConnection)url.openConnection();
3, 设置请求方式(可以不写, 默认"GET",可以指定"POST",必须大写 )
conn.setRequestMethod("GET");
//连接(可以不写)
conn.connect();
4, 获取响应(如果返回的是200 , 那么连接是成功的)
if(conn.getResponseCode() == 200)
{
InputStream is = conn.getInputStream();
.........
}
POST方式 步骤:
1, 得到URL对象
URL url = new URL(路径);
2, 打开连接
HttpUrlConnection conn = (HttpUrlConnection)url.openConnection();
3, 设置提交方式
conn.setRequestMethod("POST");
4, 设置是否可以向服务器写出数据, 默认为false
conn.setDoOutput(true);
conn.setDoInput(true);//设置是否可以向服务器获取数据, 默认为true
5, 获取向服务器写出数据的流 , 并且写入参数
OutputStream os = conn.getOutputStream();
os.write("参数1键=参数1值&参数2键=参数2值".getBytes());
os.flush();
6, 获取响应信息
if(conn.getResponseCode == 200 )
{
InputStream is = conn.getInputStream();
.......
}
实例:
实例一: 通过GET方式向服务器提交数据,并且获取响应的内容
实例二: 网络获取图片,存入本地磁盘中(GET)
实例三: 通过Post提交数据,并且获取响应的内容
二,OkHttp (Android 6.0后推荐使用)
package okhttp;
import java.io.IOException;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
/**
* 通过post 提交
* @author Administrator
*
*/
public class DemoOkhttp03 {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
//1, 导包
//2, 的到客户端
OkHttpClient client = new OkHttpClient();
//3, 发起新的请求,获取返回信息
RequestBody body = new FormBody.Builder()
.add("useName", "abc")//添加键值对
.add("usePwd", "321")
.build();
Request request = new Request.Builder()
.url("http://localhost:8080/Day_28_Servlet/LoginServlet")
.post(body)
.build();
Response response = client.newCall(request).execute();
if(response.isSuccessful())
{
String str = response.body().string();
System.out.println("服务器响应为: " + str);
}
}
}
package conn;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
/**
* 用post方式提交数据给Servlet , 并获取响应
*/
public class DemoConnection03 {
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
String path = "http://localhost:8080/Day_28_Servlet/LoginServlet";
//1, 得到URL对象
URL url = new URL(path);
//2, 打开连接
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
//3, 设置提交类型
conn.setRequestMethod("POST");
//4, 设置允许写出数据,默认是不允许 false
conn.setDoOutput(true);
conn.setDoInput(true);//当前的连接可以从服务器读取内容, 默认是true
//5, 获取向服务器写出数据的流
OutputStream os = conn.getOutputStream();
//参数是键值队 , 不以"?"开始
os.write("useName=abc&usePwd=123".getBytes());
os.flush();
//6, 获取响应的数据
if(conn.getResponseCode()==200)
{
//得到服务器写回的响应数据
InputStream is = conn.getInputStream();
//是Servlet中通过PrintWrite pw = response.getWrite();
//pw.println(....);
//pw.close();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String str = br.readLine();
System.out.println("响应内容为: " + str);
}
}
}