HttpUrlConnection 和 okhttp 請求資料
阿新 • • 發佈:2019-01-30
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); } } }