无关风月
2025-01-14 1ebda3975a267f73e0d00f577ab5c18d17931309
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
package com.stylefeng.guns.modular.system.util;// 检测到您当前的ak设置了IP白名单校验
// 您的IP白名单中的IP非公网IP,请设置为公网IP,否则将请求失败:
// 请在IP地址为0.0.0.0/0 外网IP的计算发起请求,否则将请求失败
import org.springframework.stereotype.Component;
 
import java.io.BufferedReader;
import java.io.OutputStream;
import java.io.InputStreamReader;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.TreeMap;
import java.util.Map;
 
@Component
public class TraceTrack { 
 
    public static String Host = "https://yingyan.baidu.com";
 
    public static String URI = "/api/v3/entity/add";
 
    public static String AK = "WQhfsluNzEeUHUxoH4jc4JiCQOXw4Mnx";
 
    public static void main(String[] args) throws Exception {
        // 请求参数
        String entity_name = "entity_1";
        String entity_desc = "zhangsan";
 
        // POST请求,此处使用TreeMap,默认按key排序
        extracted();
    }
 
    private static void extracted() throws Exception {
        Map params = new TreeMap<String, String>();
        params.put("ak", AK);
        params.put("service_id", "241187");
        params.put("entity_name", "entity_1");
        params.put("entity_desc", "zhangsan");
 
 
        String URL = Host + URI;
        TraceTrack ta = new TraceTrack();
        ta.requestPost(URL, params);
    }
 
    /** 发送POST请求 */
    public void requestPost(String strUrl, Map<String, String> param) throws Exception {
        if (strUrl == null || strUrl.length() <= 0 || param == null || param.size() <= 0) {
            return;
        }
 
        // 构造x-www-form-urlencoded格式的字符串
        StringBuffer queryString = new StringBuffer();
        for (Map.Entry<?, ?> pair : param.entrySet()) {
            queryString.append(pair.getKey() + "=");
            queryString.append(URLEncoder.encode((String) pair.getValue(), "UTF-8") + "&");
        }
 
        if (queryString.length() > 0) {
          queryString.deleteCharAt(queryString.length() - 1);
        }
 
        String result = "";
        try {
          URL url = new URL(strUrl);
          HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
          urlConnection.setRequestMethod("POST");
          //设置连接的超时值为3000毫秒,超时将抛出SocketTimeoutException异常
          urlConnection.setConnectTimeout(3000);
          //设置读取的超时值为3000毫秒,超时将抛出SocketTimeoutException异常
          urlConnection.setReadTimeout(3000);
          //将url连接用于输出,这样才能使用getOutputStream()。getOutputStream()返回的输出流用于传输数据
          urlConnection.setDoOutput(true);
          //设置Content-Type
          urlConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
          //getOutputStream()返回的输出流,用于写入参数数据。
          OutputStream outputStream = urlConnection.getOutputStream();
          outputStream.write(queryString.toString().getBytes());
          outputStream.flush();
          outputStream.close();
          //此时将调用接口方法。getInputStream()返回的输入流可以读取返回的数据。
          InputStreamReader isr = new InputStreamReader(urlConnection.getInputStream());
          BufferedReader reader = new BufferedReader(isr);
          StringBuffer buffer = new StringBuffer();
          String line;
          while ((line = reader.readLine()) != null) {
              buffer.append(line);
          }
          reader.close();
          isr.close();
 
          System.out.println("返回的内容: " + buffer.toString());
      } catch (IOException e) {
          e.printStackTrace();
      }
  }
}