RequestUtils.java 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. package com.skyversation.poiaddr.util;
  2. import com.alibaba.fastjson.JSONArray;
  3. import org.apache.http.HttpEntity;
  4. import org.apache.http.NameValuePair;
  5. import org.apache.http.client.entity.UrlEncodedFormEntity;
  6. import org.apache.http.client.methods.CloseableHttpResponse;
  7. import org.apache.http.client.methods.HttpGet;
  8. import org.apache.http.client.methods.HttpPost;
  9. import org.apache.http.impl.client.CloseableHttpClient;
  10. import org.apache.http.impl.client.HttpClients;
  11. import org.apache.http.message.BasicNameValuePair;
  12. import org.apache.http.util.EntityUtils;
  13. import org.json.simple.JSONObject;
  14. import org.json.simple.parser.JSONParser;
  15. import java.io.FileWriter;
  16. import java.util.ArrayList;
  17. import java.util.List;
  18. import java.util.Map;
  19. /**
  20. * 地址查询请求工具类
  21. * 地址:上海市一张图服务
  22. */
  23. public class RequestUtils {
  24. public static String request(String address) {
  25. try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
  26. String urlF = "https://service-api.onemap.sh.gov.cn/data-service-manage-service/MapProxyApi/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBsaWNhdGlvbl9pZCI6NjEsImFwcGxpY2F0aW9uX25hbWUiOiLpnZLmtabkuozkuInnu7TmnI3liqHns7vnu58iLCJleHAiOjIwNDY2Nzg0MDN9.IKUMdjUX4U1jncIUNren-iotL7duXI90aLECMjpvUX8/address_search/MapServer?query=";
  27. String urlE = "&region=310000&page_num=1&page_size=1";
  28. HttpGet httpGet = new HttpGet(urlF + address + urlE);
  29. try (CloseableHttpResponse response = httpClient.execute(httpGet)) {
  30. int statusCode = response.getStatusLine().getStatusCode();
  31. if (statusCode == 200) {
  32. HttpEntity entity = response.getEntity();
  33. return EntityUtils.toString(entity);
  34. } else {
  35. return "请求失败,状态码: " + statusCode;
  36. }
  37. }
  38. } catch (Exception e) {
  39. e.printStackTrace();
  40. return e.getMessage();
  41. }
  42. }
  43. public static void main(String[] args) {
  44. com.alibaba.fastjson.JSONObject AllData = new com.alibaba.fastjson.JSONObject();
  45. JSONArray featuresList = new JSONArray();
  46. for (int i = 1; i <= 7282; i++) {
  47. if (i == 7282) {
  48. String requestData = requestWFS(i + "");
  49. com.alibaba.fastjson.JSONObject requestJson = com.alibaba.fastjson.JSONObject.parseObject(requestData);
  50. if (requestJson.containsKey("features")) {
  51. featuresList.add(requestJson.getJSONArray("features").getJSONObject(0));
  52. }
  53. }
  54. }
  55. AllData.put("features", featuresList);
  56. AllData.put("type", "FeatureCollection");
  57. System.out.println("内容大小:" + featuresList.size());
  58. String jsonString = AllData.toJSONString();
  59. String filePath = "output/cj_1.geojson";
  60. try (FileWriter fileWriter = new FileWriter(filePath)) {
  61. fileWriter.write(jsonString);
  62. System.out.println("完成!");
  63. } catch (Exception e) {
  64. e.printStackTrace();
  65. }
  66. }
  67. public static String requestWFS(String index) {
  68. try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
  69. String urlF = "https://data.songjiang.gov.cn:19997/geoscene/rest/services/7unv4vbwqxnq4a7m9h/SHBDC/JWH_3857/MapServer/4/query?where=&text=&objectIds=";
  70. String urlE = "&time=&timeRelation=esriTimeRelationOverlaps&geometry=&geometryType=esriGeometryEnvelope&inSR=&spatialRel=esriSpatialRelIntersects&distance=&units=esriSRUnit_Foot&relationParam=&outFields=*&returnGeometry=true&returnTrueCurves=false&maxAllowableOffset=&geometryPrecision=&outSR=&havingClause=&returnIdsOnly=false&returnCountOnly=false&orderByFields=&groupByFieldsForStatistics=&outStatistics=&returnZ=false&returnM=false&gdbVersion=&historicMoment=&returnDistinctValues=false&resultOffset=&resultRecordCount=&returnExtentOnly=false&sqlFormat=none&datumTransformation=&parameterValues=&rangeValues=&quantizationParameters=&featureEncoding=esriDefault&f=geojson";
  71. HttpGet httpGet = new HttpGet(urlF + index + urlE);
  72. try (CloseableHttpResponse response = httpClient.execute(httpGet)) {
  73. int statusCode = response.getStatusLine().getStatusCode();
  74. if (statusCode == 200) {
  75. HttpEntity entity = response.getEntity();
  76. return EntityUtils.toString(entity);
  77. } else {
  78. return "请求失败,状态码: " + statusCode;
  79. }
  80. }
  81. } catch (Exception e) {
  82. e.printStackTrace();
  83. return e.getMessage();
  84. }
  85. }
  86. /**
  87. * httpPost 请求,参数类型为formData
  88. *
  89. * @param url
  90. * @param headers
  91. * @param formDatas
  92. * @return
  93. */
  94. public static JSONObject requestPost(String url, Map<String, String> headers, Map<String, String> formDatas) {
  95. try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
  96. HttpPost httpPost = new HttpPost(url); // 替换为实际的 API 地址
  97. if (headers != null && headers.size() > 0) {
  98. // 设置自定义 Header
  99. for (String key : headers.keySet()) {
  100. httpPost.addHeader(key, headers.get(key));
  101. }
  102. }
  103. if (formDatas != null && formDatas.size() > 0) {
  104. // 设置 formData
  105. List<NameValuePair> formData = new ArrayList<>();
  106. for (String key : formDatas.keySet()) {
  107. formData.add(new BasicNameValuePair(key, formDatas.get(key)));
  108. }
  109. httpPost.setEntity(new UrlEncodedFormEntity(formData));
  110. }
  111. try (CloseableHttpResponse response = httpClient.execute(httpPost)) {
  112. int statusCode = response.getStatusLine().getStatusCode();
  113. if (statusCode == 200) {
  114. HttpEntity entity = response.getEntity();
  115. JSONParser jsonParser = new JSONParser();
  116. return (JSONObject) jsonParser.parse(EntityUtils.toString(entity));
  117. } else {
  118. System.err.println("请求失败,状态码: " + statusCode);
  119. return null;
  120. }
  121. }
  122. } catch (Exception e) {
  123. e.printStackTrace();
  124. System.err.println(e.getMessage());
  125. return null;
  126. }
  127. }
  128. /**
  129. * httpPost 请求,参数类型为formData
  130. *
  131. * @param url
  132. * @param headers
  133. * @param formDatas
  134. * @return
  135. */
  136. public static JSONObject requestPost2(String url, Map<String, String> headers, org.json.JSONObject formDatas) {
  137. try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
  138. HttpPost httpPost = new HttpPost(url); // 替换为实际的 API 地址
  139. if (headers != null && headers.size() > 0) {
  140. // 设置自定义 Header
  141. for (String key : headers.keySet()) {
  142. httpPost.addHeader(key, headers.get(key));
  143. }
  144. }
  145. if (formDatas != null && formDatas.length() > 0) {
  146. // 设置 formData
  147. List<NameValuePair> formData = new ArrayList<>();
  148. for (String key : formDatas.keySet()) {
  149. formData.add(new BasicNameValuePair(key, formDatas.get(key).toString()));
  150. }
  151. httpPost.setEntity(new UrlEncodedFormEntity(formData));
  152. }
  153. try (CloseableHttpResponse response = httpClient.execute(httpPost)) {
  154. int statusCode = response.getStatusLine().getStatusCode();
  155. if (statusCode == 200) {
  156. HttpEntity entity = response.getEntity();
  157. JSONParser jsonParser = new JSONParser();
  158. return (JSONObject) jsonParser.parse(EntityUtils.toString(entity));
  159. } else {
  160. System.err.println("请求失败,状态码: " + statusCode);
  161. return null;
  162. }
  163. }
  164. } catch (Exception e) {
  165. e.printStackTrace();
  166. System.err.println(e.getMessage());
  167. return null;
  168. }
  169. }
  170. }