http post发送请求

一:

用java自带URL发送
public synchronized JSONObject getJSON(String url2, String param) {
           try {
                URL url = new URL(url2);
                HttpURLConnection con = (HttpURLConnection) url.openConnection();
                con.setDoOutput(true); //获取返回数据需要设置为true 默认false
                con.setDoInput(true); //发送数据需要设置为true 默认false
                con.setReadTimeout(5000);
                con.setConnectTimeout(5000);
                con.setRequestMethod("POST");
                con.connect();
                DataOutputStream out = new DataOutputStream(con.getOutputStream());
                if (param != null) {
                     param = URLEncoder.encode(param,"utf-8");//url编码防止中文乱码
                     out.writeBytes(param);
                }
                out.flush();
                out.close();
                BufferedReader red = new BufferedReader(new InputStreamReader(con.getInputStream(), "utf-8"));
                StringBuffer sb = new StringBuffer();
                String line;
                while ((line = red.readLine()) != null) {
                     sb.append(line);
                }
                red.close();
                return JSONObject.fromObject(sb);
           } catch (Exception e) {
                e.printStackTrace();
                return null;
           }
     }

二:apache httppost方式

 
/**
      * post请求,发送json数据
      *
      * @param url
      * @param json
      * @return
      */
     public static JSONObject doPost(String url, String json) {
           HttpPost post = new HttpPost(url);
           JSONObject response = null;
           try {
                StringEntity s = new StringEntity(json, "UTF-8"); // 中文乱码在此解决
                s.setContentType("application/json");
                post.setEntity(s);
                HttpResponse res = HttpClients.createDefault().execute(post);
                if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
                     String result = EntityUtils.toString(res.getEntity());// 返回json格式:
                     response = JSON.parseObject(result);
                }
           } catch (Exception e) {
                e.printStackTrace();
           }
           return response;
     }

三: httppost 发送map
 
   /**
      * post请求
      *
      * @param url
      * @param param
      * @return
      */
     public static String httpPost(String url, Map<String, Object> map) {
           try {
                HttpPost post = new HttpPost(url);
        //requestConfig post请求配置类,设置超时时间
                RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(5000).setSocketTimeout(50000).build();
                post.setConfig(requestConfig);
                List<NameValuePair> params = new ArrayList<NameValuePair>();
                for (Map.Entry<String, Object> entry : map.entrySet()) {
                     if (entry.getValue() != null && entry.getValue() != "") {
              //用basicNameValuePair来封装数据
                           params.add(new BasicNameValuePair(entry.getKey(), entry.getValue() + ""));
                     }
                }
          //在这个地方设置编码 防止请求乱码
                post.setEntity(new UrlEncodedFormEntity(params, "utf-8"));
                GeneralLog.info(ModelName, "请求url:" + url);
                GeneralLog.info(ModelName, "请求数据:" + map);
                CloseableHttpResponse httpResponse = HttpClients.createDefault().execute(post);
                System.out.println("返回数据:" + httpResponse);
                String result = null;
                if (httpResponse.getStatusLine().getStatusCode() == 200) {
                     HttpEntity httpEntity = httpResponse.getEntity();
                     result = EntityUtils.toString(httpEntity);// 取出应答字符串
                }
                return result;
           } catch (Exception e) {
                e.printStackTrace();
                return null;
           }
     }
原文地址:https://www.cnblogs.com/bchange/p/9156178.html