java实现发送post请求

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/w_t_y_y/article/details/82256961

post、get请求一般出现在前端调用后端接口的时候,现在如果希望java代码去调用controller接口,比如在job定时器中,达到某一条件需要返回给前端一条提示消息(如订单30分钟内未付款,已被自动取消),而前端只能调controler接口,所以这时可以用job去调controller接口,在这个controller接口里面返回信息给前端。

 * @param url:请求url 
     * @param content: 请求体(参数) 
     * @return errorStr:错误信息;status:状态码,response:返回数据 
     */  
    public Map<String, Object> request(String url, String content) {  
        Map<String, Object> result = new HashMap<String, Object>();  
        String errorStr = "";  
        String status = "";  
        String response = "";  
        PrintWriter out = null;  
        BufferedReader in = null;  
        try {  
            URL realUrl = new URL(url);  
            // 打开和URL之间的连接  
            URLConnection conn = realUrl.openConnection();  
            HttpURLConnection httpUrlConnection = (HttpURLConnection) conn;  
            // 设置请求属性  
            httpUrlConnection.setRequestProperty("Content-Type", "application/json");  
            httpUrlConnection.setRequestProperty("x-adviewrtb-version", "2.1");  
            // 发送POST请求必须设置如下两行  
            httpUrlConnection.setDoOutput(true);  
            httpUrlConnection.setDoInput(true);  
            // 获取URLConnection对象对应的输出流  
            out = new PrintWriter(httpUrlConnection.getOutputStream());  
            // 发送请求参数  
            out.write(content);  
            // flush输出流的缓冲  
            out.flush();  
            httpUrlConnection.connect();  
            // 定义BufferedReader输入流来读取URL的响应  
            in = new BufferedReader(new InputStreamReader(httpUrlConnection.getInputStream()));  
            String line;  
            while ((line = in.readLine()) != null) {  
                response += line;  
            }  
            status = new Integer(httpUrlConnection.getResponseCode()).toString();  
        } catch (Exception e) {  
            System.out.println("发送 POST 请求出现异常!" + e);  
            errorStr = e.getMessage();  
        }  
        // 使用finally块来关闭输出流、输入流  
        finally {  
            try {  
                if (out != null) { out.close();}  
                if (in != null) {in.close();}  
            } catch (Exception ex) {  
                ex.printStackTrace();  
            }  
        }  
         
        result.put("errorStr", errorStr);  
        result.put("response", response);  
        result.put("status", status);  
        return result;  
  
    }  

猜你喜欢

转载自blog.csdn.net/w_t_y_y/article/details/82256961