这是通过HTTPURLConnection进行POST和GET的实现。
import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.URL; import java.util.HashMap; import java.util.Map; public class PostGET { public static void main(String[] args) throws UnsupportedEncodingException { MapheaderMap = new HashMap (); String bodyStr = "{\"doc\":{\"status\":\"Disconnected\"}}"; InputStream body = new ByteArrayInputStream(bodyStr.getBytes("UTF-8")); System.out.println("Sending POST"); post("http://127.0.0.1:3000", headerMap, body); System.out.println(""); System.out.println("Sending GET"); get("http://127.0.0.1:3000?test=hello", headerMap); } public static void post(String targetUrl, Map headerMap, InputStream body) { HttpURLConnection http = null; try { http = (HttpURLConnection) new URL(targetUrl).openConnection(); http.setRequestMethod("POST"); http.setDoOutput(true); for (Map.Entry header : headerMap.entrySet()) { http.setRequestProperty(header.getKey(), header.getValue()); } OutputStream out = http.getOutputStream(); out.write(readInput(body)); out.close(); InputStream in = http.getInputStream(); String response = new String(readInput(in), "UTF-8"); System.out.println("Response code: " + http.getResponseCode()); System.out.println("Response headers : " + http.getHeaderFields()); System.out.println("response from server: " + response); } catch (IOException e) { e.printStackTrace(); } } public static void get(String targetUrl, Map headerMap) { HttpURLConnection http = null; try { http = (HttpURLConnection) new URL(targetUrl).openConnection(); http.setRequestMethod("GET"); for (Map.Entry header : headerMap.entrySet()) { http.setRequestProperty(header.getKey(), header.getValue()); } InputStream in = http.getInputStream(); String response = new String(readInput(in), "UTF-8"); System.out.println("Response code: " + http.getResponseCode()); System.out.println("Response headers : " + http.getHeaderFields()); System.out.println("response from server: " + response); } catch (IOException e) { e.printStackTrace(); } } public static byte[] readInput(InputStream in) { ByteArrayOutputStream bais = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int readLen = -1; try { while ((readLen = in.read(buffer)) != -1) { bais.write(buffer, 0, readLen); } in.close(); } catch (IOException e) { e.printStackTrace(); } return bais.toByteArray(); } }
下面是一个Nodejs服务器,可以通过以下方式对此进行测试
http = require('http'); server = http.createServer( function(req, res) { if (req.method == 'POST') { console.log("POST"); var body = ''; req.on('data', function (data) { body += data; console.log("Partial body: " + body); }); req.on('end', function () { console.log("Body: " + body); }); res.writeHead(200, {'Content-Type': 'text/html'}); res.end('post received'); } else if(req.method === 'GET') { console.log("GET"); var params = req.url.split('?'); params = params.length > 1 ? params[1] : ""; console.log('params : ' + params); var html = '' + params+ '
'; res.writeHead(200, {'Content-Type': 'text/html'}); res.end(html); } }); port = 3000; host = '127.0.0.1'; server.listen(port, host); console.log('Listening at http://' + host + ':' + port);
Java客户端输出
Sending POST Response code: 200 Response headers : {Transfer-Encoding=[chunked], null=[HTTP/1.1 200 OK], Connection=[keep-alive], Date=[Thu, 31 Dec 2015 19:40:05 GMT], Content-Type=[text/html]} response from server: post received Sending GET Response code: 200 Response headers : {Transfer-Encoding=[chunked], null=[HTTP/1.1 200 OK], Connection=[keep-alive], Date=[Thu, 31 Dec 2015 19:40:05 GMT], Content-Type=[text/html]} response from server:test=hello
节点服务器输出
Listening at http://127.0.0.1:3000 POST Partial body: {"doc":{"status":"Disconnected"}} Body: {"doc":{"status":"Disconnected"}} GET params : test=hello