最近搜索

HttpClient 如何发送post 请求和get请求

浏览:291
管理员 2023-10-15 09:18



模拟发送post请求 附加请求头信息

public static String getHtmlByPost2(String url, String codes)
      throws ClientProtocolException, IOException {
   CloseableHttpClient httpclient = HttpClients.createDefault();
   HttpPost httppost = new HttpPost(url);
   httppost.setHeader("Accept", "*/*");
   httppost.setHeader("Accept-Encoding", "gzip, deflate");
   httppost.setHeader("Accept-Language", "zh-CN,zh;q=0.9");
   httppost.setHeader("Connection", "keep-alive");
   httppost.setHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
   httppost.setHeader("Cookie",
         "__cfduid=d788de813737581b85309e78edcb4311d1491017109; aliyungf_tc=AQAAAFdFGCTBew4AVl3sKqQ8eBpkf1Km; acw_tc=AQAAAEbwFS2VhQEAVl3sKi4q2hv9UPUY; PHPSESSID=9ks560p3cfsl4ijssdbs293vm0; acw_sc=58df42bb4cb66ad520a52d2d33feebd47c9e51ba; SXHNET=ILOVESXH@2");
   httppost.setHeader("Host", "3123213213.shop:8200");
   httppost.setHeader("Origin", "http://123123213.shop");
   httppost.setHeader("Referer", "http://123213123.shop/");
   httppost.setHeader("User-Agent",
         "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.6045.160 Mobile Safari/537.36");

   // 创建参数队列
   List<NameValuePair> formparams = new ArrayList<NameValuePair>();

   String result = null;
   formparams.add(new BasicNameValuePair("codes", codes));


   UrlEncodedFormEntity uefEntity;

   uefEntity = new UrlEncodedFormEntity(formparams, "UTF-8");
   httppost.setEntity(uefEntity);
   // System.out.println("executing request " + httppost.getURI());
   CloseableHttpResponse response = httpclient.execute(httppost);

   HttpEntity entity = response.getEntity();
   if (entity != null) {
      result = EntityUtils.toString(entity, "UTF-8");
   }
   response.close();
   httpclient.close();
   return result;
}


public static void main(String[] args) throws Exception {
   System.out.println(getHtmlByPost2("http://231.12321321.cn:8200/api/visitorStatistics",
         "5V3HXwyalRsy2IUDptzGGfl"));
}
输出的信息如下图:

image.png

网站的原始请求如下:

image.png

image.png

image.png






POST 请求 json 格式


   /**
     * 
     * @param webSite
     * @param api
     * @return account =  BC-Kh7whgUzNFv5p77QwQh9U   2个请使用\n换行
     */
    public static String getCount(String webSite, String api, String account) {
        try {
            // 发送预检请求(OPTIONS 请求)
            URL optionsUrl = new URL(webSite + api);
            HttpURLConnection optionsConn = (HttpURLConnection) optionsUrl.openConnection();
            optionsConn.setRequestMethod("OPTIONS");

            int optionsResponseCode = optionsConn.getResponseCode();
            System.out.println("OPTIONS Response Code: " + optionsResponseCode);

            // 发送实际的 POST 请求
            URL postUrl = new URL(webSite + api);
            HttpURLConnection postConn = (HttpURLConnection) postUrl.openConnection();
            postConn.setRequestMethod("POST");
            postConn.setRequestProperty("Content-Type", "application/json");

            JSONObject object = new JSONObject();
            object.put("account", account);
            String jsonInputString = object.toString();
            //String jsonInputString = "{\"account\": \"BC-Kh7whgUzNFv5p77QwQh9U\"}";

            postConn.setDoOutput(true);
            DataOutputStream postOut = new DataOutputStream(postConn.getOutputStream());
            postOut.writeBytes(jsonInputString);
            postOut.flush();
            postOut.close();

            int postResponseCode = postConn.getResponseCode();
            System.out.println("POST Response Code: " + postResponseCode);

            BufferedReader postIn = new BufferedReader(new InputStreamReader(postConn.getInputStream()));
            String postInputLine;
            StringBuffer postResponse = new StringBuffer();
            while ((postInputLine = postIn.readLine()) != null) {
                postResponse.append(postInputLine);
            }
            postIn.close();
            System.out.println("POST Response: " + postResponse.toString());
            return postResponse.toString();
//       JSONObject item  =  JSONObject.fromObject(postResponse.toString());
//       JSONObject data = (JSONObject) item.get("data");
//       System.out.println(data.getString("code"));
//       System.out.println(data.getString("front_domain"));
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }



image.png

image.png




image.png



















普通的get请求 没有加任何参数

/**
 * 发送get 请求一个url返回 返回的内容
 * 
 */
public static String get(String url) {
   String html = null;
   CloseableHttpClient httpClient = HttpClients.createDefault(); // 创建httpClient实例
   HttpGet httpGet = new HttpGet(url); // 创建httpget实例
   CloseableHttpResponse response = null;
   try {
      response = httpClient.execute(httpGet); // 执行http get请求
   } catch (ClientProtocolException e) { // http协议异常
      e.printStackTrace();
   } catch (IOException e) { // io异常
      e.printStackTrace();
   }
   HttpEntity entity = response.getEntity(); // 获取返回实体
   try {
      // System.out.println("网页内容:"+EntityUtils.toString(entity,
      // "utf-8")); // 获取网页内容
      html = EntityUtils.toString(entity, "utf-8");
   } catch (ParseException e) { // 解析异常
      e.printStackTrace();
   } catch (IOException e) { // io异常
      e.printStackTrace();
   }
   try {
      response.close(); // response关闭
   } catch (IOException e) { // io异常
      e.printStackTrace();
   }
   try {
      httpClient.close(); // httpClient关闭
   } catch (IOException e) {
      e.printStackTrace();
   }
   return html;
}









post请求  请求上面加了header参数,还有body参数


/**
 * body 这是json格式的数据。{"content":"34524"}
 * object.put("content", msg);
 * String body = object.toString();
 * 传来的就是body 字符串
 */
public static String post(String url, String body,String token ) throws  Exception {
    CloseableHttpClient httpclient = HttpClients.createDefault();

    // 这个地方要写, PARAMETERS这个参数是如何设置的
   //https://openapi.chanjet.com/accounting/openapi/cc/book/findByEnterpriseId?queryType=BINDING_TO_THIRD_PLATFORM
    // 一般来说 post 是没有parameters  这个是get的参数。
    // 这个地方要写, PARAMETERS这个参数是如何设置的

    HttpPost httppost = new HttpPost(url);
    httppost.setHeader("appKey", PropertiesUtil.appKey);
    httppost.setHeader("appSecret", PropertiesUtil.appSecret);
    httppost.setHeader("Content-Type", "application/json");
    if(StringUtil.isNotEmpty(token)){
        httppost.setHeader("openToken", token);
    }
    String result = "";
    if(StringUtil.isNotEmpty(body)){
        //这是body参数。{page:1,limit:2}
        StringEntity entity = new StringEntity(body, "utf-8");// 解决中文乱码问题
        entity.setContentEncoding("UTF-8");
        entity.setContentType("application/json");
        httppost.setEntity(entity);
    }
    CloseableHttpResponse response = httpclient.execute(httppost);
    HttpEntity httpEntity = response.getEntity();
    if (httpEntity != null) {
        result = EntityUtils.toString(httpEntity, "UTF-8");
    }
    response.close();
    httpclient.close();
    System.out.println(result);
    return result;
}





get请求 请求上面加了header参数


/**
 * 发送get 请求一个url返回 返回的内容
 */
public static String get(String url,String token) throws  Exception {
    String html = null;
    CloseableHttpClient httpClient = HttpClients.createDefault(); // 创建httpClient实例
    HttpGet httpGet = new HttpGet(url); // 创建httpget实例
    // 设置请求头
    httpGet.setHeader("appKey", PropertiesUtil.appKey);
    httpGet.setHeader("appSecret", PropertiesUtil.appSecret);
    httpGet.setHeader("Content-Type", "application/json");
    if(StringUtil.isNotEmpty(token)){
        httpGet.setHeader("openToken", token);
    }
    // 设置请求头
    HttpResponse response = httpClient.execute(httpGet); // 执行http get请求
    // 处理响应
    int statusCode = response.getStatusLine().getStatusCode();
    String responseBody = EntityUtils.toString(response.getEntity());
    System.out.println("Status code: " + statusCode);
    System.out.println("Response body: " + responseBody);
    return  responseBody;
}




image.png

联系站长

站长微信:xiaomao0055

站长QQ:14496453