Java java지도 시간 HttpUtils 요청 도구 클래스 코드

HttpUtils 요청 도구 클래스 코드

May 28, 2018 pm 04:13 PM
http 도구

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
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.client.utils.URIBuilder;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import com.pingan.qhcs.map.audit.constant.CodeConstant;
import com.pingan.qhcs.map.audit.exception.MapException;
public class HttpClientUtil {
protected static Log logger = LogFactory.getLog(HttpClientUtil.class);    
private static PoolingHttpClientConnectionManager cm;
private static String EMPTY_STR = "";
private static String UTF_8 = "UTF-8";
private static void init() {
if (cm == null) {
            cm = new PoolingHttpClientConnectionManager();
            cm.setMaxTotal(50);// 整个连接池最大连接数cm.setDefaultMaxPerRoute(5);// 每路由最大连接数,默认值是2        }
    }/** * 通过连接池获取HttpClient
     * 
     * @return */public static CloseableHttpClient getHttpClient() {
        init();return HttpClients.custom().setConnectionManager(cm).build();
    }public static String httpGetRequest(String url) {
        HttpGet httpGet = new HttpGet(url);return getResult(httpGet);
    }public static String httpGetRequest(String url, Map<String, Object> params) throws URISyntaxException {
        URIBuilder ub = new URIBuilder();
        ub.setPath(url);

        ArrayList<NameValuePair> pairs = covertParams2NVPS(params);
        ub.setParameters(pairs);

        HttpGet httpGet = new HttpGet(ub.build());        return getResult(httpGet);
    }public static String httpGetRequest(String url, Map<String, Object> headers, Map<String, Object> params)throws URISyntaxException {
        URIBuilder ub = new URIBuilder();
        ub.setPath(url);

        ArrayList<NameValuePair> pairs = covertParams2NVPS(params);
        ub.setParameters(pairs);

        HttpGet httpGet = new HttpGet(ub.build());for (Map.Entry<String, Object> param : headers.entrySet()) {
            httpGet.addHeader(param.getKey(), String.valueOf(param.getValue()));
        }return getResult(httpGet);
    }
    public static String httpPostRequest(String url) {
        HttpPost httpPost = new HttpPost(url);return getResult(httpPost);
    }
    public static String httpPostRequest(String url, Map<String, Object> params) throws UnsupportedEncodingException {
        HttpPost httpPost = new HttpPost(url);
        ArrayList<NameValuePair> pairs = covertParams2NVPS(params);
        httpPost.setEntity(new UrlEncodedFormEntity(pairs, UTF_8));return getResult(httpPost);
    }
    public static String httpPostRequest(String url, Map<String, Object> headers, Map<String, Object> params)throws UnsupportedEncodingException {
        HttpPost httpPost = new HttpPost(url);
        for (Map.Entry<String, Object> param : headers.entrySet()) {
            httpPost.addHeader(param.getKey(), String.valueOf(param.getValue()));
        }

        ArrayList<NameValuePair> pairs = covertParams2NVPS(params);
        httpPost.setEntity(new UrlEncodedFormEntity(pairs, UTF_8));return getResult(httpPost);
    }
    public static String httpPostRequest(String url, Map<String, Object> headers, String strBody)throws Exception {
        HttpPost httpPost = new HttpPost(url);for (Map.Entry<String, Object> param : headers.entrySet()) {
            httpPost.addHeader(param.getKey(), String.valueOf(param.getValue()));
        }
        httpPost.setEntity(new StringEntity(strBody, UTF_8));return getResult(httpPost);
    }    
    private static ArrayList<NameValuePair> covertParams2NVPS(Map<String, Object> params) {
        ArrayList<NameValuePair> pairs = new ArrayList<NameValuePair>();
        for (Map.Entry<String, Object> param : params.entrySet()) {
            pairs.add(new BasicNameValuePair(param.getKey(), String.valueOf(param.getValue())));
        }return pairs;
    }/** * 处理Http请求
     * 
     *  setConnectTimeout:设置连接超时时间,单位毫秒。
     *  setConnectionRequestTimeout:设置从connect Manager获取Connection 超时时间,单位毫秒。这个属性是新加的属性,因为目前版本是可以共享连接池的。
     *  setSocketTimeout:请求获取数据的超时时间,单位毫秒。 如果访问一个接口,多少时间内无法返回数据,就直接放弃此次调用。
     *  
     * @param request
     * @return */private static String getResult(HttpRequestBase request) {
        
        RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(60000)
                .setConnectionRequestTimeout(5000).setSocketTimeout(60000).build();
        request.setConfig(requestConfig);// 设置请求和传输超时时间
        // CloseableHttpClient httpClient = HttpClients.createDefault();
        CloseableHttpClient httpClient = getHttpClient();
        try {
            CloseableHttpResponse response = httpClient.execute(request); //执行请求
            // response.getStatusLine().getStatusCode();
            HttpEntity entity = response.getEntity();
            if (entity != null) {
            // long len = entity.getContentLength();// -1 表示长度未知
            String result = EntityUtils.toString(entity);
                response.close();
                // httpClient.close();
                return result;
            }
        } catch (ClientProtocolException e) {
            logger.error("[maperror] HttpClientUtil ClientProtocolException : " + e.getMessage());
            throw new MapException(CodeConstant.CODE_CONNECT_FAIL, "HttpClientUtil ClientProtocolException :" + e.getMessage());
        } catch (IOException e) {
            logger.error("[maperror] HttpClientUtil IOException : " + e.getMessage());
            throw new MapException(CodeConstant.CODE_CONNECT_FAIL, "HttpClientUtil IOException :" + e.getMessage());
        } 
        finally {

        }
        return EMPTY_STR;
    }

}

 

위 내용은 HttpUtils 요청 도구 클래스 코드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제

Huobi HTX의 새로운 자산 1 주일 (7.28-8.4) : 멀티 트랙 공명 밈 및 AI 개념은 시장을 이끌고 있습니다. Huobi HTX의 새로운 자산 1 주일 (7.28-8.4) : 멀티 트랙 공명 밈 및 AI 개념은 시장을 이끌고 있습니다. Aug 08, 2025 pm 11:03 PM

목차 Meme의 인기가 남아 있습니다 : 포도 나무와 당나귀는 계속 상승합니다. 기술적 이야기 가열 : AI 및 개인 정보 보호 컴퓨팅은 체인, RWA 및 지역 내러티브에서 인기가 있습니다. Omni의 신흥 스타 Huobi HTX Wealth Effect는 계속 발표되고 있습니다. 7 월 28 일부터 8 월 4 일까지 Huobi HTX와 관련하여 Global Crypto Market은 휘발성 패턴을 유지했으며 핫스팟 회전 속도가 가속화되었습니다. 이번 주 Huobi HTX가 시작한 자산 중 Meme, AI, 개인 정보 보호 컴퓨팅, 크로스 체인 및 RWA가 함께 발전했으며 시장 부 효과가 계속 나타납니다. 이것은 또한 Huobi HTX가 새로운 자산의 집단적 증가를 달성하여 최첨단 프로젝트 광업 및 생태 학적 레이아웃에서 미래 지향적 인 특성을 더욱 확인하고 사용자가 새로운 시장주기를 파악할 수 있도록 강력한 지원을 제공하는 7 월 이후 5 주 연속 주입니다. Huobi (HTX

cryptocurrency 거래량이란 무엇입니까? 거래의 사용은 무엇입니까? cryptocurrency 거래량이란 무엇입니까? 거래의 사용은 무엇입니까? Aug 08, 2025 pm 11:12 PM

목차 거래량이란 무엇입니까? 거래량과 가격 간의 관계 거래에 거래량 사용은 얼마입니까? 거래량 1을 사용할 때 주목해야 할 사항. 거래량의 증폭은 반드시 유리한 일이 아닙니다. 2. 비정상적인 거래량은 기초 및 뉴스로 해석되어야합니다. 3. 다른 시장 단계에서 거래량의 해석은 4가 매우 다릅니다. 거래량 사기의 가능성, 브러시 볼륨, 브러시 볼륨의 전환량에 대한주의를 기울여야합니다. 가격 패턴 및 기술 지표에 대한 포괄적 인 분석에서 분석 된 Oanda는 고유 한 "포지션 데이터 차트"Oanda 오픈 포지션 거래 원리 및 응용 프로그램을 제공합니까? 첫 번째 사분면

천재 Stablecoin 청구서 분석에 대한 포괄적 인 이해 천재 Stablecoin 청구서 분석에 대한 포괄적 인 이해 Aug 08, 2025 pm 10:51 PM

2025 년 7 월 18 일, 미국 대통령은 "미국 안정적인 코인 국가 혁신법을 안내하고 설립하는"(이하 "천재 법"이라고 함)에 서명하여 디지털 자산 규제 분야의 역사적 단계를 나타 냈습니다. 이 법안은 미국의 첫 연방 수준의 Stablecoin 특별 법률로서 "지불 기반 Stablecoins"에 대한 포괄적이고 명확한 법적 및 규제 프레임 워크를 설정하는 것을 목표로합니다.

2,000 위안으로 통화 서클에서 200,000을 벌는 방법. 통화 서클에서 2,000 위안을 200,000 위안으로 전환하는 실용적인 기술 2,000 위안으로 통화 서클에서 200,000을 벌는 방법. 통화 서클에서 2,000 위안을 200,000 위안으로 전환하는 실용적인 기술 Aug 08, 2025 pm 08:12 PM

암호 화폐에서는 기회와 위험으로 가득 찬 분야에서 2,000 위안과 같은 제한된 원칙을 20 만 위안에 추가하면 100 배 증가가 필요하다는 것을 의미합니다. 먼 꿈은 아니지만 확실히 쉬운 과정은 아닙니다. 정확한 전략, 특별한 인내심, 시장에 대한 깊은 이해 및 약간의 운이 필요합니다. 이 여정은 투자 비전뿐만 아니라 인간 본성과 위험을 통제하는 능력에 대한 통찰력을 테스트합니다.

Binance Binance 공식 웹 사이트 로그인 최신 웹 사이트 Binance Binance Exchange 공식 페이지 Binance Binance 공식 웹 사이트 로그인 최신 웹 사이트 Binance Binance Exchange 공식 페이지 Aug 08, 2025 pm 10:18 PM

먼저 공식 채널을 통해 Binance 앱을 다운로드하십시오. 1. 기사의 링크를 클릭하여 다운로드를 시작하십시오. 2. 설치 파일을 완료하려면 "여전히 다운로드"를 선택하십시오. 3. 다운로드 목록에서 파일을 찾으십시오. 설치하는 동안 1. 파일을 클릭하여 설치를 시작합니다. 2. 휴대 전화의 "알 수없는 소스에서 응용 프로그램을 설치 허용"켜십시오. 3. 승인 후 프롬프트에 따라 설치를 완료하십시오. 4. 데스크탑 아이콘을 클릭하여 성공 후 사용하십시오. 강력한 비밀번호를 사용하고 자산의 보안을 보장하기 위해 니모닉 및 개인 키를 유지하십시오. 마지막으로 공식 채널을 통해 운영을 다운로드하여 표준화하여 계정 보안을 보장합니다.

구매 가치가있는 것은 Bitcoin 또는 XRP를 더 가치있게 생각하십니까? 누가 가장 높은 장기 보상을받을 것인가? XRP가 새로운 대 군주가 될 수 있습니까? 구매 가치가있는 것은 Bitcoin 또는 XRP를 더 가치있게 생각하십니까? 누가 가장 높은 장기 보상을받을 것인가? XRP가 새로운 대 군주가 될 수 있습니까? Aug 08, 2025 pm 10:42 PM

시장 인식은 비트 코인 또는 XRP가 투자 할 가치가있는 것에 대해 나뉘어져 있으며, 더 높은 장기 수익을 제공 할 수있는 사람. 비트 코인은 많은 사람들에 의해 "디지털 금"으로 간주되며 가치 도구의 저장소이며, 그 부족은 가치 제안의 핵심입니다. 반면, XRP는 기존의 SWIFT 시스템을 대체하기 위해 국경 간 지불을 해결하는 데 중점을두고 빠른 거래 속도 및 저렴한 비용으로 이점을 제공합니다.

Sidekick (K-Coin)이란 무엇입니까? 조수 토큰 경제 및 가격 예측 Sidekick (K-Coin)이란 무엇입니까? 조수 토큰 경제 및 가격 예측 Aug 11, 2025 am 09:30 AM

디렉토리 조수는 무엇입니까? Sidekick 's Journey Sidekick의 역사와 중요도 측면 키 특징 Sidekick Founder $ K- Sidekicklivefi 경제 홍보 $ K Sidekick $ k 토큰 경제 가격 예측 측면 킥 Token 2026 가격 예측 2030 가격 예측 측면 킥 토큰 2035 가격 예측 사이드 킥 토큰 2040 가격 예측 측면도 예측.

Binance Binance Exchange 계약 거래 운영 프로세스 Binance Binance Exchange 계약 거래 운영 프로세스 Aug 08, 2025 pm 09:39 PM

신분증을 등록하고 완료하고 계약 계좌를 개설하며 SPOT 계정에서 계약 계좌로 자금을 이체해야합니다. 2. USDT 또는 통화 표준 계약을 선택하고 거래 쌍을 선택하고 1 ~ 125 배의 레버리지를 설정하십시오. 3. 한도 명령, 시장 주문 등과 같은 주문을 통한 오픈 포지션, 정지 손실을 설정하고 위험을 통제하기 위해 이익을 얻고, 적시에 실시간으로 위치를 모니터링하고, 가까운 위치를 모니터링합니다. 4. 위험 환경 설정에 따라 전체 위치 모드 (병합 마진) 또는 위치 별 모드 (독립 마진)를 선택하십시오. 5. Binance Trading Robot을 사용하여 그리드 거래 전략과 같은 자동 거래를 달성하여 거래 효율성 및 인텔리전스를 개선 할 수 있습니다. 이 단계를 완전히 파악하면 Binance 플랫폼에서 효율적이고 제어 가능한 계약 거래를 수행하는 데 도움이됩니다.

See all articles