Restful接口的调用,前端一般使用ajax调用,后端可以使用的方法比较多,
1. HttpURLConnection实现
2. HttpClient实现
3. Spring的RestTemplate
本文用HttpURLConnection实现调用Restful接口
public static void main(String[] args) throws Exception{ String url = "http://localhost:8080/gjxx-system-web/getBusiness?licnum=" + "123&organiz="+"345"; URL urlUtil = new URL(url); /** * 此处的urlConnection对象实际上是根据URL的请求协议(此处是http)生成的URLConnection类的子类HttpURLConnection, * 故此处最好将其转化为HttpURLConnection类型的对象,以便用到HttpURLConnection更多的API. */ HttpURLConnection urlConnnection = (HttpURLConnection) urlUtil.openConnection(); //设定请求的方法为"POST",默认是GET urlConnnection.setRequestMethod("POST"); //设置是否向httpUrlConnection输出,因为这个是post请求,参数要放在http正文内,因此需要设为true, 默认情况下是false; urlConnnection.setDoOutput(true); //设置是否从httpUrlConnection读入,默认情况下是true; urlConnnection.setDoInput(true); //Post请求不能使用缓存 urlConnnection.setUseCaches(true); //设定传送的内容类型是可序列化的java对象(如果不设此项,在传送序列化对象时,当WEB服务默认的不是这种类型时可能抛java.io.EOFException) urlConnnection.setRequestProperty("Content-Type", "application/json"); //设置连接超时 urlConnnection.setConnectTimeout(10000); //设置读取超时(从输入流读取时的超时) urlConnnection.setReadTimeout(20000); /** * connect()会按照之前set生成HttpHeader * 正文的内容是通过outputStream流写入 */ // 此处getOutputStream会隐含的进行connect() OutputStream outputStream = urlConnnection.getOutputStream(); JSONObject jsonObject = new JSONObject(); jsonObject.put("licnum", "123"); jsonObject.put("organiz", "345"); //向对象输出流写出数据,outputStream不是一个网络流,充其量是个字符串流,往里面写入的东西不会立即发送到网络 outputStream.write(jsonObject.toString().getBytes("utf-8")); //刷新对象输出流,将任何字节都写入潜在的流中(些处为outputStream) outputStream.flush(); //关闭流对象。此时,不能再向对象输出流写入任何数据,先前写入的数据存在于内存缓冲区中, 在调用下边的getInputStream()函数时才把准备好的http请求正式发送到服务器 outputStream.close(); /** * 实际发送请求的代码段在下面 */ // 调用HttpURLConnection连接对象的getInputStream()函数,将内存缓冲区中封装好的完整的HTTP请求电文发送到服务端。 InputStream inputStream = urlConnnection.getInputStream(); // <===注意,实际发送请求的代码段就在这里 BufferedReader br = new BufferedReader(new InputStreamReader(inputStream, "utf-8")); String line = ""; String result = ""; for (; (line = br.readLine()) != null; result += line) { ; } System.out.println(result); br.close(); }