發送 post 請求:java
客戶端實例:web
/**
* 發送 post請求 - httpUrlConnection
* @param args
*/
public static void main(String[] args) {
String encoding="UTF-8";
String params="[{\"addTime\":\"2011-09-19 14:23:02\",\"iccid\":\"1111\",\"id\":0,\"imei\":\"2222\",\"imsi\":\"3333\",\"phoneType\":\"4444\",\"remark\":\"aaaa\",\"tel\":\"5555\"}]";
String path ="http://localhost:8080/web1/servletPostCallBack.hts";
String result = ""; // 響應結果
try{
byte[] data = params.getBytes(encoding);
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod("POST");
// http正文內,所以須要設爲true, 默認狀況下是false;
conn.setDoOutput(true);
// 設置是否從httpUrlConnection讀入,默認狀況下是true;
conn.setDoInput(true);
// 設定傳送的內容類型是可序列化的java對象
conn.setRequestProperty("Content-type", "application/json");
conn.setRequestProperty("Content-Length", String.valueOf(data.length));json
conn.setConnectTimeout(5*1000); // 設置鏈接服務器超時時間
conn.setReadTimeout(5*1000); // 設置從主機讀取數據超時(單位:毫秒)
conn.connect(); // 自此設置完 消息頭
//在http頭後面緊跟着的是http請求的正文,正文的內容是經過outputStream流寫入的
OutputStream outStream = conn.getOutputStream(); // 如今經過輸出流對象構建對象輸出流對象,以實現輸出可序列化的對象。
outStream.write(data); // 向對象輸出流寫出數據,這些數據將存到內存緩衝區中
outStream.flush(); // 刷新對象輸出流,將任何字節都寫入潛在的流中
outStream.close(); // 關閉流對象。此時,不能再向對象輸出流寫入任何數據,先前寫入的數據存在於內存緩衝區中,
// 在調用下邊的 getInputStream()函數時才把準備好的 http 請求正式發送到服務器
System.out.println(conn.getResponseCode()); //響應代碼 200表示成功
if(conn.getResponseCode()==200){
InputStream inStream = conn.getInputStream(); // <===注意,實際發送請求的代碼段就在這裏
BufferedReader reader = new BufferedReader(new InputStreamReader(inStream, "utf-8"));
String line = "";
while((line = reader.readLine()) != null){
result += line;
}
}
System.out.println("post請求後響應的結果爲:" + result);
}catch(Exception e){
e.printStackTrace();
}
}服務器
服務器端實例:app
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
InputStream inputStream = null;
InputStreamReader inputStreamReader = null;
BufferedReader bufferedReader = null;
String strReq = null;
PrintWriter out = null;
inputStream = request.getInputStream();
inputStreamReader = new InputStreamReader(inputStream,"utf-8");
bufferedReader = new BufferedReader(inputStreamReader);
StringBuffer result = new StringBuffer();
String line = null;
while((line = bufferedReader.readLine()) != null){
result.append(line);
}
//請求json報文
strReq = result.toString();
System.out.println("post請求的報文爲:" + strReq);
response.setCharacterEncoding("UTF-8");
out = response.getWriter();
out.print("接受成功--this is ok!");
out.close();
}函數