From b2e89ca1b11f33417f3e83223c4aa188186c8155 Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期五, 05 七月 2024 17:38:18 +0800
Subject: [PATCH] 1. 新增走航报告自动道路识别模块

---
 src/main/kotlin/com/flightfeather/uav/common/net/HttpMethod.kt |   86 ++++++++++++++++++++++--------------------
 1 files changed, 45 insertions(+), 41 deletions(-)

diff --git a/src/main/kotlin/com/flightfeather/uav/common/net/HttpMethod.kt b/src/main/kotlin/com/flightfeather/uav/common/net/HttpMethod.kt
index 7593aba..ec25f84 100644
--- a/src/main/kotlin/com/flightfeather/uav/common/net/HttpMethod.kt
+++ b/src/main/kotlin/com/flightfeather/uav/common/net/HttpMethod.kt
@@ -1,41 +1,33 @@
 package com.flightfeather.uav.common.net
 
-import org.apache.commons.httpclient.HttpClient
-import org.apache.commons.httpclient.HttpMethodBase
-import org.apache.commons.httpclient.methods.GetMethod
-import org.apache.commons.httpclient.methods.PostMethod
-import org.apache.commons.httpclient.methods.StringRequestEntity
-import org.apache.commons.httpclient.protocol.Protocol
-import org.slf4j.LoggerFactory
+import org.apache.http.HttpEntity
+import org.apache.http.client.methods.CloseableHttpResponse
+import org.apache.http.client.methods.HttpGet
+import org.apache.http.client.methods.HttpPost
+import org.apache.http.client.methods.HttpRequestBase
+import org.apache.http.entity.ContentType
+import org.apache.http.entity.StringEntity
+import org.apache.http.impl.client.HttpClients
 
 /**
  * @author riku
  * Date: 2020/10/14
  */
 class HttpMethod(
-        private val host: String, private val port: Int, private val isHttps: Boolean = false
+    private val host: String, private val port: Int, private val isHttps: Boolean = false,
 ) {
-    private val logger = LoggerFactory.getLogger(HttpMethod::class.java)
 
     data class MyResponse(
         val success: Boolean,
-        val m: HttpMethodBase,
+        val m: CloseableHttpResponse,
     )
 
     object Head {
         val TEXT_PLAIN = Pair("Content-Type", "text/plain")
     }
 
-    private val httpClient = HttpClient()
-
-    init {
-        Protocol.registerProtocol("https", Protocol("https", SkipCertificateValidation.MySecureProtocolSocketFactory(), port))
-        if (isHttps) {
-            httpClient.hostConfiguration.setHost(host, port, Protocol.getProtocol("https"))
-        } else {
-            httpClient.hostConfiguration.setHost(host, port)
-        }
-    }
+    private val httpClient = HttpClients.createDefault()
+    private val baseUrl = "${if (isHttps) "https" else "http"}://${host}:${port}"
 
     fun get(url: String, params: List<Pair<String, String>> = emptyList(), headers: List<Pair<String, String>> = emptyList()): MyResponse {
         var p: String = ""
@@ -46,46 +38,58 @@
                 "&" + it.first + "=" + it.second
             }
         }
-        val getMethod = GetMethod("$url?$p")
+        val getMethod = HttpGet("$baseUrl$url?$p")
         defaultConfig(getMethod)
         headers.forEach {
-            getMethod.setRequestHeader(it.first, it.second)
+            getMethod.addHeader(it.first, it.second)
         }
 
-        return when (httpClient.executeMethod(getMethod)) {
-            200 -> MyResponse(true, getMethod)
-            else -> MyResponse(false, getMethod)
+        val res = httpClient.execute(getMethod)
+        return when (res.statusLine.statusCode) {
+            200 -> MyResponse(true, res)
+            else -> MyResponse(false, res)
         }
     }
 
     fun post(url: String, data: String = "", headers: List<Pair<String, String>> = emptyList()): MyResponse {
-        val postMethod = PostMethod(url)
+        val postMethod = HttpPost(baseUrl + url)
         defaultConfig(postMethod)
         headers.forEach {
-            postMethod.setRequestHeader(it.first, it.second)
+            postMethod.setHeader(it.first, it.second)
         }
         if (data.isNotBlank()) {
-            postMethod.requestEntity = StringRequestEntity(data, "application/json", "utf-8")
+            postMethod.entity = StringEntity(data, ContentType.APPLICATION_JSON)
         }
 
-        return try {
-            when (httpClient.executeMethod(postMethod)) {
-                200 -> MyResponse(true, postMethod)
-                else -> MyResponse(false, postMethod)
-            }
-        } catch (e: Exception) {
-            logger.error(e.message)
-            MyResponse(false, postMethod)
+        val res = httpClient.execute(postMethod)
+        return when (res.statusLine.statusCode) {
+            200 -> MyResponse(true, res)
+            else -> MyResponse(false, res)
         }
     }
 
-    private fun defaultConfig(method: HttpMethodBase) {
-        method.setRequestHeader("Accept", "*/*");
-        method.setRequestHeader("Connection", "Keep-Alive");
+    fun post(url: String, entity: HttpEntity, headers: List<Pair<String, String>> = emptyList()):
+            MyResponse {
+        val postMethod = HttpPost(baseUrl + url)
+        headers.forEach {
+            postMethod.addHeader(it.first, it.second)
+        }
+        postMethod.entity = entity
+
+        val res = httpClient.execute(postMethod)
+        return when (res.statusLine.statusCode) {
+            200 -> MyResponse(true, res)
+            else -> MyResponse(false, res)
+        }
+    }
+
+    private fun defaultConfig(method: HttpRequestBase) {
+        method.addHeader("Accept", "*/*");
+        method.addHeader("Connection", "Keep-Alive");
 //        method.setRequestHeader("Accept-Language", "zh-cn,zh;q=0.5");
-        method.setRequestHeader("Accept-Encoding", "gzip,deflate,br");
+        method.addHeader("Accept-Encoding", "gzip,deflate,br");
 //        method.setRequestHeader("Content-Type", "application/json;charset=utf-8")
-        method.setRequestHeader("Content-Type", "application/json")
+        method.addHeader("Content-Type", "application/json")
 //        method.setRequestHeader("Content-Type", "application/json;charset=GBK")
     }
 

--
Gitblit v1.9.3