@@ -3,53 +3,41 @@ package xyz.bluspring.unitytranslate.util
33import com.google.gson.JsonElement
44import com.google.gson.JsonObject
55import com.google.gson.JsonParser
6- import java.io.BufferedInputStream
7- import java.io.BufferedOutputStream
8- import java.net.HttpURLConnection
9- import java.net.URL
6+ import org.apache.http.HttpHeaders
7+ import org.apache.http.client.config.CookieSpecs
8+ import org.apache.http.client.config.RequestConfig
9+ import org.apache.http.client.methods.HttpPost
10+ import org.apache.http.entity.StringEntity
11+ import org.apache.http.impl.client.HttpClients
12+ import org.apache.http.util.EntityUtils
1013
1114object HttpHelper {
1215 fun post (uri : String , body : JsonObject , headers : Map <String , String > = mapOf()): JsonElement {
13- val url = URL (uri)
14- var connection: HttpURLConnection ? = null
15-
16- val data = body.toString().toByteArray(Charsets .UTF_8 )
17-
18- try {
19- connection = url.openConnection() as HttpURLConnection
20- connection.requestMethod = " POST"
21- connection.connectTimeout = 60_000
22- connection.readTimeout = 60_000
23-
24- connection.setRequestProperty(" Accept" , " application/json" )
25- connection.setRequestProperty(" Content-Type" , " application/json" )
26- headers.forEach { (key, value) ->
27- connection.setRequestProperty(key, value)
16+ HttpClients .createDefault().use { httpClient ->
17+ val request = HttpPost (uri)
18+ request.config = RequestConfig .custom()
19+ .setConnectTimeout(60_000 )
20+ .setSocketTimeout(60_000 )
21+ .setCookieSpec(CookieSpecs .STANDARD )
22+ .setConnectionRequestTimeout(60_000 )
23+ .build()
24+
25+ request.setHeader(HttpHeaders .ACCEPT , " application/json" )
26+ request.setHeader(HttpHeaders .CONTENT_TYPE , " application/json" )
27+ for ((key, value) in headers) {
28+ request.setHeader(key, value)
2829 }
2930
30- connection.doOutput = true
31- connection.setFixedLengthStreamingMode(data.size)
31+ request.entity = StringEntity (body.toString())
3232
33- val outputStream = BufferedOutputStream (connection.outputStream )
33+ val response = httpClient.execute(request )
3434
35- outputStream.write(data)
36- outputStream.flush()
37- outputStream.close()
35+ if (response.statusLine.statusCode / 100 != 2 )
36+ throw Exception (" Failed to load $uri (code: ${response.statusLine.statusCode} )" )
3837
39- if (connection.responseCode / 100 != 2 ) {
40- throw Exception (" Failed to load $uri (code: ${connection.responseCode} )" )
41- } else {
42- val inputStream = BufferedInputStream (connection.inputStream)
43- val reader = inputStream.bufferedReader(Charsets .UTF_8 )
44- val result = JsonParser .parseReader(reader)
38+ val responseBody = EntityUtils .toString(response.entity, Charsets .UTF_8 )
4539
46- reader.close()
47- inputStream.close()
48-
49- return result
50- }
51- } finally {
52- connection?.disconnect()
40+ return JsonParser .parseString(responseBody)
5341 }
5442 }
5543}
0 commit comments