| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543 |
- /*
- * ********************************************************************************************************************
- *
- * iFHS7.
- * ;BBMBMBMc rZMBMBR BMB
- * MBEr:;PBM, 7MBMMEOBB: BBB RBW
- * XK: BO SB. :SZ MBM. c;; ir BBM :FFr :SSF: ;xBMB:r iuGXv. i:. iF2;
- * DBBM0r. :D S7 ;XMBMB GMBMu. MBM: BMB MBMBBBMBMS WMBMBMBBK MBMBMBM BMBRBMBW .MBMBMBMBB
- * :JMRMMD .. , 1MMRM1; ;MBMBBR: MBM ;MB: BMB: MBM. RMBr sBMH BM0 UMB, BMB. KMBv
- * ;. XOW B1; :uM: 1RE, i .2BMBs rMB. MBO MBO JMB; MBB MBM BBS 7MBMBOBM: MBW :BMc
- * OBRJ.SEE MRDOWOR, 3DE:7OBM . ;BMB RMR7BM BMB MBB. BMB ,BMR .BBZ MMB rMB, BMM rMB7
- * :FBRO0D0 RKXSXPR. JOKOOMPi BMBSSWBMB; BMBB: MBMB0ZMBMS .BMBOXRBMB MBMDE RBM2;SMBM; MBB xBM2
- * iZGE O0SHSPO. uGZ7. sBMBMBDL :BMO OZu:BMBK, rRBMB0; ,EBMB xBMBr:ER. RDU :OO;
- * ,BZ, 1D0 RPSFHXR. xWZ .SMr . .BBB
- * :0BMRDG RESSSKR. 2WOMBW; BMBMR
- * i0BM: SWKHKGO MBDv
- * .UB OOGDM. MK, Copyright (c) 2015-2019. 斯伯坦机器人
- * , XMW ..
- * r All rights reserved.
- *
- * ********************************************************************************************************************
- */
- package com.sybotan.base.utils
- import com.alibaba.fastjson.PropertyNamingStrategy
- import com.sybotan.base.extensions.toJson
- import okhttp3.*
- import java.util.concurrent.TimeUnit
- /**
- * Http工具类
- *
- * @author 庞利祥 <sybotan@126.com>
- */
- object SHttpUtil {
- /** 连接超时时间 */
- var connectTimeout: Long = 30L
- /** 读取超时时间 */
- var readTimeout: Long = 30L
- /** 写入超时时间 */
- var writeTimeout: Long = 30L
- /** http客户端 */
- private val httpClient: OkHttpClient by lazy {
- OkHttpClient.Builder()
- .connectTimeout(connectTimeout, TimeUnit.SECONDS)
- .readTimeout(readTimeout, TimeUnit.SECONDS)
- .writeTimeout(writeTimeout, TimeUnit.SECONDS)
- .build()
- }
- /** 媒体类型 */
- val ALTERNATIVE = MediaType.parse("multipart/alternative")
- val DIGEST = MediaType.parse("multipart/digest")
- val FORM = MediaType.parse("multipart/form-data")
- val JSON = MediaType.parse("application/json; charset=utf-8")
- val MIXED = MediaType.parse("multipart/mixed")
- val PARALLEL = MediaType.parse("multipart/parallel")
- /**
- * 根据扩展名获得Http的Content-Type
- *
- * @param extensionName 文件扩展名
- * @return 扩展名对应的Content-Type
- */
- fun contentType(extensionName: String): String {
- val map = mapOf(
- "tif" to "image/tiff",
- "001" to "application/x-001",
- "301" to "application/x-301",
- "323" to "text/h323",
- "906" to "application/x-906",
- "907" to "drawing/907",
- "a11" to "application/x-a11",
- "acp" to "audio/x-mei-aac",
- "ai" to "application/postscript",
- "aif" to "audio/aiff",
- "aifc" to "audio/aiff",
- "aiff" to "audio/aiff",
- "anv" to "application/x-anv",
- "asa" to "text/asa",
- "asf" to "video/x-ms-asf",
- "asp" to "text/asp",
- "asx" to "video/x-ms-asf",
- "au" to "audio/basic",
- "avi" to "video/avi",
- "awf" to "application/vnd.adobe.workflow",
- "biz" to "text/xml",
- "bmp" to "application/x-bmp",
- "bot" to "application/x-bot",
- "c4t" to "application/x-c4t",
- "c90" to "application/x-c90",
- "cal" to "application/x-cals",
- "cat" to "application/vnd.ms-pki.seccat",
- "cdf" to "application/x-netcdf",
- "cdr" to "application/x-cdr",
- "cel" to "application/x-cel",
- "cer" to "application/x-x509-ca-cert",
- "cg4" to "application/x-g4",
- "cgm" to "application/x-cgm",
- "cit" to "application/x-cit",
- "class" to "java/*",
- "cml" to "text/xml",
- "cmp" to "application/x-cmp",
- "cmx" to "application/x-cmx",
- "cot" to "application/x-cot",
- "crl" to "application/pkix-crl",
- "crt" to "application/x-x509-ca-cert",
- "csi" to "application/x-csi",
- "css" to "text/css",
- "cut" to "application/x-cut",
- "dbf" to "application/x-dbf",
- "dbm" to "application/x-dbm",
- "dbx" to "application/x-dbx",
- "dcd" to "text/xml",
- "dcx" to "application/x-dcx",
- "der" to "application/x-x509-ca-cert",
- "dgn" to "application/x-dgn",
- "dib" to "application/x-dib",
- "dll" to "application/x-msdownload",
- "doc" to "application/msword",
- "dot" to "application/msword",
- "drw" to "application/x-drw",
- "dtd" to "text/xml",
- "dwf" to "Model/vnd.dwf",
- "dwf" to "application/x-dwf",
- "dwg" to "application/x-dwg",
- "dxb" to "application/x-dxb",
- "dxf" to "application/x-dxf",
- "edn" to "application/vnd.adobe.edn",
- "emf" to "application/x-emf",
- "eml" to "message/rfc822",
- "ent" to "text/xml",
- "epi" to "application/x-epi",
- "eps" to "application/x-ps",
- "eps" to "application/postscript",
- "etd" to "application/x-ebx",
- "exe" to "application/x-msdownload",
- "fax" to "image/fax",
- "fdf" to "application/vnd.fdf",
- "fif" to "application/fractals",
- "fo" to "text/xml",
- "frm" to "application/x-frm",
- "g4" to "application/x-g4",
- "gbr" to "application/x-gbr",
- "gif" to "image/gif",
- "gl2" to "application/x-gl2",
- "gp4" to "application/x-gp4",
- "hgl" to "application/x-hgl",
- "hmr" to "application/x-hmr",
- "hpg" to "application/x-hpgl",
- "hpl" to "application/x-hpl",
- "hqx" to "application/mac-binhex40",
- "hrf" to "application/x-hrf",
- "hta" to "application/hta",
- "htc" to "text/x-component",
- "htm" to "text/html",
- "html" to "text/html",
- "htt" to "text/webviewhtml",
- "htx" to "text/html",
- "icb" to "application/x-icb",
- "ico" to "image/x-icon",
- "ico" to "application/x-ico",
- "iff" to "application/x-iff",
- "ig4" to "application/x-g4",
- "igs" to "application/x-igs",
- "iii" to "application/x-iphone",
- "img" to "application/x-img",
- "ins" to "application/x-internet-signup",
- "isp" to "application/x-internet-signup",
- "ivf" to "video/x-ivf",
- "java" to "java/*",
- "jfif" to "image/jpeg",
- "jpe" to "image/jpeg",
- "jpe" to "application/x-jpe",
- "jpeg" to "image/jpeg",
- "jpg" to "image/jpeg",
- "jpg" to "application/x-jpg",
- "js" to "application/x-javascript",
- "jsp" to "text/html",
- "la1" to "audio/x-liquid-resources",
- "lar" to "application/x-laplayer-reg",
- "latex" to "application/x-latex",
- "lavs" to "audio/x-liquid-secure",
- "lbm" to "application/x-lbm",
- "lmsff" to "audio/x-la-lms",
- "ls" to "application/x-javascript",
- "ltr" to "application/x-ltr",
- "m1v" to "video/x-mpeg",
- "m2v" to "video/x-mpeg",
- "m3u" to "audio/mpegurl",
- "m4e" to "video/mpeg4",
- "mac" to "application/x-mac",
- "man" to "application/x-troff-man",
- "math" to "text/xml",
- "mdb" to "application/msaccess",
- "mdb" to "application/x-mdb",
- "mfp" to "application/x-shockwave-flash",
- "mht" to "message/rfc822",
- "mhtml" to "message/rfc822",
- "mi" to "application/x-mi",
- "mid" to "audio/mid",
- "midi" to "audio/mid",
- "mil" to "application/x-mil",
- "mml" to "text/xml",
- "mnd" to "audio/x-musicnet-download",
- "mns" to "audio/x-musicnet-stream",
- "mocha" to "application/x-javascript",
- "movie" to "video/x-sgi-movie",
- "mp1" to "audio/mp1",
- "mp2" to "audio/mp2",
- "mp2v" to "video/mpeg",
- "mp3" to "audio/mp3",
- "mp4" to "video/mp4",
- "mpa" to "video/x-mpg",
- "mpd" to "application/vnd.ms-project",
- "mpe" to "video/x-mpeg",
- "mpeg" to "video/mpg",
- "mpg" to "video/mpg",
- "mpga" to "audio/rn-mpeg",
- "mpp" to "application/vnd.ms-project",
- "mps" to "video/x-mpeg",
- "mpt" to "application/vnd.ms-project",
- "mpv" to "video/mpg",
- "mpv2" to "video/mpeg",
- "mpw" to "application/vnd.ms-project",
- "mpx" to "application/vnd.ms-project",
- "mtx" to "text/xml",
- "mxp" to "application/x-mmxp",
- "net" to "image/pnetvue",
- "nrf" to "application/x-nrf",
- "nws" to "message/rfc822",
- "odc" to "text/x-ms-odc",
- "out" to "application/x-out",
- "p10" to "application/pkcs10",
- "p12" to "application/x-pkcs12",
- "p7b" to "application/x-pkcs7-certificates",
- "p7c" to "application/pkcs7-mime",
- "p7m" to "application/pkcs7-mime",
- "p7r" to "application/x-pkcs7-certreqresp",
- "p7s" to "application/pkcs7-signature",
- "pc5" to "application/x-pc5",
- "pci" to "application/x-pci",
- "pcl" to "application/x-pcl",
- "pcx" to "application/x-pcx",
- "pdf" to "application/pdf",
- "pdx" to "application/vnd.adobe.pdx",
- "pfx" to "application/x-pkcs12",
- "pgl" to "application/x-pgl",
- "pic" to "application/x-pic",
- "pko" to "application/vnd.ms-pki.pko",
- "pl" to "application/x-perl",
- "plg" to "text/html",
- "pls" to "audio/scpls",
- "plt" to "application/x-plt",
- "png" to "image/png",
- "png" to "application/x-png",
- "pot" to "application/vnd.ms-powerpoint",
- "ppa" to "application/vnd.ms-powerpoint",
- "ppm" to "application/x-ppm",
- "pps" to "application/vnd.ms-powerpoint",
- "ppt" to "application/vnd.ms-powerpoint",
- "ppt" to "application/x-ppt",
- "pr" to "application/x-pr",
- "prf" to "application/pics-rules",
- "prn" to "application/x-prn",
- "prt" to "application/x-prt",
- "ps" to "application/x-ps",
- "ptn" to "application/x-ptn",
- "pwz" to "application/vnd.ms-powerpoint",
- "r3t" to "text/vnd.rn-realtext3d",
- "ra" to "audio/vnd.rn-realaudio",
- "ram" to "audio/x-pn-realaudio",
- "ras" to "application/x-ras",
- "rat" to "application/rat-resources",
- "rdf" to "text/xml",
- "rec" to "application/vnd.rn-recording",
- "red" to "application/x-red",
- "rgb" to "application/x-rgb",
- "rjs" to "application/vnd.rn-realsystem-rjs",
- "rjt" to "application/vnd.rn-realsystem-rjt",
- "rlc" to "application/x-rlc",
- "rle" to "application/x-rle",
- "rm" to "application/vnd.rn-realmedia",
- "rmf" to "application/vnd.adobe.rmf",
- "rmi" to "audio/mid",
- "rmj" to "application/vnd.rn-realsystem-rmj",
- "rmm" to "audio/x-pn-realaudio",
- "rmp" to "application/vnd.rn-rn_music_package",
- "rms" to "application/vnd.rn-realmedia-secure",
- "rmvb" to "application/vnd.rn-realmedia-vbr",
- "rmx" to "application/vnd.rn-realsystem-rmx",
- "rnx" to "application/vnd.rn-realplayer",
- "rp" to "image/vnd.rn-realpix",
- "rpm" to "audio/x-pn-realaudio-plugin",
- "rsml" to "application/vnd.rn-rsml",
- "rt" to "text/vnd.rn-realtext",
- "rtf" to "application/msword",
- "rtf" to "application/x-rtf",
- "rv" to "video/vnd.rn-realvideo",
- "sam" to "application/x-sam",
- "sat" to "application/x-sat",
- "sdp" to "application/sdp",
- "sdw" to "application/x-sdw",
- "sit" to "application/x-stuffit",
- "slb" to "application/x-slb",
- "sld" to "application/x-sld",
- "slk" to "drawing/x-slk",
- "smi" to "application/smil",
- "smil" to "application/smil",
- "smk" to "application/x-smk",
- "snd" to "audio/basic",
- "sol" to "text/plain",
- "sor" to "text/plain",
- "spc" to "application/x-pkcs7-certificates",
- "spl" to "application/futuresplash",
- "spp" to "text/xml",
- "ssm" to "application/streamingmedia",
- "sst" to "application/vnd.ms-pki.certs tore",
- "stl" to "application/vnd.ms-pki.stl",
- "stm" to "text/html",
- "sty" to "application/x-sty",
- "svg" to "text/xml",
- "swf" to "application/x-shockwave-flash",
- "tdf" to "application/x-tdf",
- "tg4" to "application/x-tg4",
- "tga" to "application/x-tga",
- "tif" to "image/tiff",
- "tif" to "application/x-tif",
- "tiff" to "image/tiff",
- "tld" to "text/xml",
- "top" to "drawing/x-top",
- "torrent" to "application/x-bittorrent",
- "tsd" to "text/xml",
- "txt" to "text/plain",
- "uin" to "application/x-icq",
- "uls" to "text/iuls",
- "vcf" to "text/x-vcard",
- "vda" to "application/x-vda",
- "vdx" to "application/vnd.visio",
- "vml" to "text/xml",
- "vpg" to "application/x-vpeg005",
- "vsd" to "application/vnd.visio",
- "vsd" to "application/x-vsd",
- "vss" to "application/vnd.visio",
- "vst" to "application/vnd.visio",
- "vst" to "application/x-vst",
- "vsw" to "application/vnd.visio",
- "vsx" to "application/vnd.visio",
- "vtx" to "application/vnd.visio",
- "vxml" to "text/xml",
- "wav" to "audio/wav",
- "wax" to "audio/x-ms-wax",
- "wb1" to "application/x-wb1",
- "wb2" to "application/x-wb2",
- "wb3" to "application/x-wb3",
- "wbmp" to "image/vnd.wap.wbmp",
- "wiz" to "application/msword",
- "wk3" to "application/x-wk3",
- "wk4" to "application/x-wk4",
- "wkq" to "application/x-wkq",
- "wks" to "application/x-wks",
- "wm" to "video/x-ms-wm",
- "wma" to "audio/x-ms-wma",
- "wmd" to "application/x-ms-wmd",
- "wmf" to "application/x-wmf",
- "wml" to "text/vnd.wap.wml",
- "wmv" to "video/x-ms-wmv",
- "wmx" to "video/x-ms-wmx",
- "wmz" to "application/x-ms-wmz",
- "wp6" to "application/x-wp6",
- "wpd" to "application/x-wpd",
- "wpg" to "application/x-wpg",
- "wpl" to "application/vnd.ms-wpl",
- "wq1" to "application/x-wq1",
- "wr1" to "application/x-wr1",
- "wri" to "application/x-wri",
- "wrk" to "application/x-wrk",
- "ws" to "application/x-ws",
- "ws2" to "application/x-ws",
- "wsc" to "text/scriptlet",
- "wsdl" to "text/xml",
- "wvx" to "video/x-ms-wvx",
- "xdp" to "application/vnd.adobe.xdp",
- "xdr" to "text/xml",
- "xfd" to "application/vnd.adobe.xfd",
- "xfdf" to "application/vnd.adobe.xfdf",
- "xhtml" to "text/html",
- "xls" to "application/vnd.ms-excel",
- "xls" to "application/x-xls",
- "xlw" to "application/x-xlw",
- "xml" to "text/xml",
- "xpl" to "audio/scpls",
- "xq" to "text/xml",
- "xql" to "text/xml",
- "xquery" to "text/xml",
- "xsd" to "text/xml",
- "xsl" to "text/xml",
- "xslt" to "text/xml",
- "xwd" to "application/x-xwd",
- "x_b" to "application/x-x_b",
- "sis" to "application/vnd.symbian.install",
- "sisx" to "application/vnd.symbian.install",
- "x_t" to "application/x-x_t",
- "ipa" to "application/vnd.iphone",
- "apk" to "application/vnd.android.package-archive",
- "xap" to "application/x-silverlight-app"
- )
- // 扩展名转换为小写
- val key = extensionName.toLowerCase()
- // 如果map包含指定的扩展名,则返回对应的Content-Type, 否则返回二进制流类型"application/octet-stream"
- return if (map.contains(key)) {
- map.getValue(key)
- } else {
- "application/octet-stream"
- }
- } // Fun contentType()
- /**
- * GET 请求
- *
- * @param url URL 地址
- * @return 服务器返回的应答信息
- */
- @Throws(Exception::class)
- fun getRequest(url: String): String {
- val request = Request.Builder()
- .url(url)
- .get()
- .build()
- val call = httpClient.newCall(request)
- val response = call.execute()
- return response.body()!!.string()
- } // Fun getRequest()
- /**
- * GET 请求(zip压缩格式)
- *
- * @param url URL地址
- * @return 服务器返回的应答信息
- */
- @Throws(Exception::class)
- fun getZipRequest(url: String): String {
- val request = Request.Builder()
- .url(url)
- .get()
- .header("Accept-Encoding", "gzip")
- .build()
- val call = httpClient.newCall(request)
- val response = call.execute()
- return SGzipUtil.uncompressToString(response.body()!!.bytes()) ?: ""
- } // Fun getZipRequest()
- /**
- * 发送post对象请求
- *
- * @param url URL地址
- * @param body 请求体
- * @return 返回应答体字符串
- */
- @Throws(Exception::class)
- fun postRequest(url: String, body: String, type: MediaType = JSON!!): String {
- val jsonBody = FormBody.create(type, body)
- val request = createPostRequest(url, jsonBody)
- val call = httpClient.newCall(request)
- val response = call.execute()
- return response.body()!!.string()
- } // Fun postRequest()
- /**
- * 发送get对象请求
- *
- * @param <T> 请求的返回类型
- * @param url URL地址
- * @param namingStrategy 命名规则
- * @return 接收到的请求体
- */
- @Throws(Exception::class)
- inline fun <reified T> getObject(url: String, namingStrategy: PropertyNamingStrategy? = null): T {
- val responseJson = getRequest(url)
- return SJsonUtil.fromJson(responseJson, namingStrategy)
- } // Fun getObject()
- /**
- * 发送post请求
- *
- * @param url URL地址
- * @param <T> 请求的返回类型
- * @param requestBody 发送到服务器的请求体
- * @param namingStrategy 命名规则
- * @return 接收到的请求体
- */
- @Throws(Exception::class)
- inline fun <reified T> postObject(url: String, requestBody: Any, namingStrategy: PropertyNamingStrategy? = null): T {
- val responseJson = postRequest(url, requestBody.toJson(namingStrategy))
- return SJsonUtil.fromJson(responseJson, namingStrategy)
- } // Fun postObject()
- /**
- * 上传文件
- *
- * @param url 上传地址
- */
- fun uploadFile(url: String) {
- /*RequestBody requestBody = new MultipartBody.Builder()
- .setType(MultipartBody.FORM)
- .addFormDataPart("file", file.getName(), RequestBody.create(MediaType.parse("image/png"), file))
- .build();*/
- return
- } // Fun uploadFile()
- /**
- * 下载文件
- *
- * @param url 文件url地址
- */
- fun downloadFile(url: String) {
- } // Fun downloadFile()
- /**
- * 创建Http post请求对象
- *
- * @param url URL地址
- * @param jsonBody 发送到服务器的请求体
- */
- private fun createPostRequest(url: String, jsonBody: RequestBody? = null): Request {
- val builder = Request.Builder()
- .url(url)
- if (jsonBody!= null) {
- builder.post(jsonBody)
- }
- return builder.build()
- } // Fun createPostRequest()
- } // Object SHttpUtil
|