发送 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();
}函数