HttpClient 사용법 상세 설명

7196 단어 HttpClient사용법
위의 글 은 여러분 에 게HttpClient 상세 사용 예시 상세 설명을 소 개 했 습 니 다.좋아 하 는 친 구 는 클릭 하여 볼 수 있 습 니 다.오늘 은 HttpClient 용법 을 계속 소개 하 겠 습 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.
1.프로필
HttpClient 는 Apache Jakarta Common 의 하위 프로젝트 로 효율 적 이 고 최신 이 며 기능 이 풍부 한 HTTP 프로 토 콜 을 지원 하 는 클 라 이언 트 프로 그래 밍 도구 꾸러미 이 며 HTTP 프로 토 콜 의 최신 버 전과 제안 을 지원 합 니 다.HttpClient 는 이미 많은 프로젝트 에 응용 되 었 다.예 를 들 어 Apache Jakarta 에서 유명한 다른 두 개의 오픈 소스 프로젝트 인 Cactus 와 HTMLUnit 은 모두 HttpClient 를 사용 했다.
HttpClient 는 전통 적 인 JDK 자체 의 URLConnection 에 비해 용이 성과 유연성 을 증가 시 켰 다.이 는 클 라 이언 트 가 Http 요청 을 보 내 는 것 이 쉬 울 뿐만 아니 라 개발 자 테스트 인터페이스(Http 프로 토 콜 기반)도 편리 하 게 하고 개발 의 효율 을 향상 시 키 며 코드 의 건장 성 을 향상 시 켰 다.
2.특성
  • 표준 적 이 고 깨끗 한 자바 언어 를 바탕 으로 합 니 다.Http 1.0 과 Http 1.1
  • 을 실현 했다.
  • 확장 가능 한 대상 을 대상 으로 하 는 구조 로 Http 의 모든 방법(GET,POST,PUT,DELETE,HEAD,OPTIONS,and TRACE)을 실현 했다.
  • HTTPS 프로 토 콜 을 지원 합 니 다.
  • Http 에이 전 트 를 통 해 투명 한 연결 을 만 듭 니 다.
  • CONNECT 방법 으로 Http 에이 전 트 를 통 해 터널 을 만 드 는 https 연결.
  • Basic,Digest,NTLMv 1,NTLMv 2,NTLM 2 Session,SNPNEGO/Kerberos 인증 방안.
  • 플러그 인 식 사용자 정의 인증 방안 입 니 다.
  • 휴대용 믿 을 만 한 소켓 공장 은 제3자 해결 방안 을 더욱 쉽게 사용 할 수 있 게 한다.
  • 연결 관리 자 는 다 중 스 레 드 응용 을 지원 합 니 다.최대 연결 수 를 설정 하 는 것 을 지원 하 며,호스트 마다 최대 연결 수 를 설정 하 는 것 을 지원 합 니 다.만 료 된 연결 을 발견 하고 닫 습 니 다.
  • Set-Cookie 의 Cookie 를 자동 으로 처리 합 니 다.
  • 플러그 인 식 사용자 정의 쿠키 정책 입 니 다.
  • Request 의 출력 흐름 은 스 트림 내용 이 socket 서버 에 직접 버퍼 되 는 것 을 피 할 수 있 습 니 다.
  • Response 의 입력 흐름 은 socket 서버 에서 해당 내용 을 직접 읽 을 수 있 습 니 다.
  • http 1.0 과 http 1.1 에서 KeepAlive 를 이용 하여 지속 적 인 연결 을 유지 합 니 다.
  • 서버 에서 보 낸 response code 와 headers 를 직접 가 져 옵 니 다.
  • 연결 시간 초과 능력 을 설정 합 니 다.
  • 실험 적 인 지원 http.1.1 response caching.
  • 소스 코드 는 Apache License 를 기반 으로 무료 로 얻 을 수 있 습 니 다.
  • 3.사용법
  • HttpClient 대상 을 만 듭 니 다.
  • 요청 방법의 인 스 턴 스 를 만 들 고 요청 URL 을 지정 합 니 다.GET 요청 을 보 내 려 면 HttpGet 대상 만 들 기;POST 요청 을 보 내 려 면 HttpPost 대상 을 만 듭 니 다.
  • 요청 인 자 를 보 내 려 면 HttpGet,HttpPost 의 공동 setParams(HttpParams params)방법 으로 요청 인 자 를 추가 할 수 있 습 니 다.HttpPost 대상 에 게 도 setEntity(HttpEntity entity)방법 으로 요청 인 자 를 설정 할 수 있 습 니 다.
  • HttpClient 대상 의 execute(HttpUriRequest request)를 호출 하여 요청 을 보 냅 니 다.이 방법 은 HttpResponse 를 되 돌려 줍 니 다.
  • HttpResponse 의 getAllHeaders(),getHeaders(String name)등 방법 으로 서버 응답 헤드 를 가 져 올 수 있 습 니 다.HttpResponse 의 getEntity()방법 을 호출 하면 HttpEntity 대상 을 가 져 올 수 있 습 니 다.이 대상 은 서버 의 응답 내용 을 포장 합 니 다.프로그램 은 이 대상 을 통 해 서버 의 응답 내용 을 가 져 올 수 있 습 니 다.
  • 연결 해제.실행 방법 이 성공 하 든 안 하 든 연결 을 풀 어야 합 니 다
  • 4.실례
    4.1 pom 가 져 오기
    
    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
    
      <groupId>com.wo</groupId>
      <artifactId>HttpClient_test</artifactId>
      <version>1.0-SNAPSHOT</version>
    
      <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
      </parent>
    
      <dependencies>
        <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
          <groupId>org.apache.httpcomponents</groupId>
          <artifactId>httpclient</artifactId>
          <version>4.5.5</version>
        </dependency>
        <dependency>
          <groupId>com.alibaba</groupId>
          <artifactId>fastjson</artifactId>
          <version>1.2.47</version>
        </dependency>
      </dependencies>
    </project>
    4.2.get 요청 방식
    
    @RequestMapping("findAll")
      public String findAll() throws Exception{
        //  Http   
        CloseableHttpClient build = HttpClientBuilder.create().build();
        //  get  
        HttpGet httpGet = new HttpGet("http://localhost:8088/lunbo/findAll");
        //    
        CloseableHttpResponse execute = build.execute(httpGet);
        //     
        StatusLine statusLine = execute.getStatusLine();
        //        
        System.out.println("    :"+statusLine.getStatusCode());
        String s = EntityUtils.toString(execute.getEntity());
        build.close();
        execute.close();
        return s;
      }
    4.3 post 요청 방식
    
    //post    
      @RequestMapping("/findAllPost/{page}/{size}")
      public String findAll(@PathVariable("page") int page,@PathVariable("size") int size) throws Exception {
        //  Http   
        CloseableHttpClient build = HttpClientBuilder.create().build();
        //  post  
        HttpPost httpPost = new HttpPost("http://localhost:8088/position/findAll/"+page+"/"+size);
        //    
        CloseableHttpResponse execute = build.execute(httpPost);
        //     
        StatusLine statusLine = execute.getStatusLine();
        //        
        System.out.println("    :"+statusLine.getStatusCode());
        String s = EntityUtils.toString(execute.getEntity());
        build.close();
        execute.close();
        return s;
      }
    
      //post map  
      @RequestMapping("findById")
      public String findById(@RequestParam("id") Integer id)throws Exception{
        //  httpclicent    
        CloseableHttpClient build = HttpClientBuilder.create().build();
        //      
        HttpPost httpPost = new HttpPost("http://localhost:8088/position/findById");
        //      
        Map map=new HashMap<>();
        map.put("id",id);
        // map   json  
        Object o = JSONObject.toJSON(map);
        //            
        StringEntity stringEntity = new StringEntity(o.toString(), "utf-8");
        //           
        httpPost.setEntity(stringEntity);
        //  content-Type
        httpPost.setHeader("Content-Type","application/json");
        //    
        CloseableHttpResponse execute = build.execute(httpPost);
        //     
        StatusLine statusLine = execute.getStatusLine();
        //        
        System.out.println("    :"+statusLine.getStatusCode());
        String s = EntityUtils.toString(execute.getEntity());
        build.close();
        execute.close();
        return s;
      }
    HttpClient 사용법 에 대한 자세 한 설명 은 여기까지 입 니 다.HttpClient 사용법 에 관 한 더 많은 내용 은 저희 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 읽 어 주시 기 바 랍 니 다.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!

    좋은 웹페이지 즐겨찾기