Java常用开源库: apache HttpClient 4.x, oktttp, jetty HttpClient

apache httpclient

https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient
https://mvnrepository.com/artifact/org.apache.httpcomponents/httpmime/
http://hc.apache.org/httpcomponents-client-ga/index.html

GET

       URIBuilder builder = new URIBuilder("http://www.baidu.com/s");
       builder.addParameter("wd", "wzj_whut");
       String url = builder.toString();
       try (CloseableHttpClient httpclient = HttpClients.createDefault()) {
           final HttpGet httpget = new HttpGet(url);
           httpget.addHeader(HttpHeaders.AUTHORIZATION, "token ");
           CloseableHttpResponse responseBody = httpclient.execute(httpget);
           if(responseBody.getStatusLine().getStatusCode() == 200) {
               String responseText = EntityUtils.toString(responseBody.getEntity());
               System.out.println(responseText);
           }
       }

POST Form

      String url = "https://ufosdk.baidu.com/?m=Client&a=postMsg";
      try (CloseableHttpClient httpclient = HttpClients.createDefault()) {
          final HttpPost post = new HttpPost(url);

          List<NameValuePair> formParams = new ArrayList<NameValuePair>();
          formParams.add(new BasicNameValuePair("content", "hello"));
          UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formParams, Consts.UTF_8);
          post.setEntity(entity);
          //post.setEntity(new StringEntity("q=httpclient", ContentType.DEFAULT_TEXT));
          CloseableHttpResponse responseBody = httpclient.execute(post);
          String responseText = EntityUtils.toString(responseBody.getEntity());
          if(responseBody.getStatusLine().getStatusCode() == 200) {
          }else{
              System.out.println("http error: " + responseBody.getStatusLine().getStatusCode());
          }
          System.out.println(responseText);
      }

POST String

post.setEntity(new StringEntity("q=httpclient", ContentType.DEFAULT_TEXT));

上传文件/Multipart

   String url = "https://ufosdk.baidu.com/?m=Client&a=postMsg";
   try (CloseableHttpClient httpclient = HttpClients.createDefault()) {
       final HttpPost post = new HttpPost(url);
       // 依赖apache的httpmime
       MultipartEntityBuilder builder = MultipartEntityBuilder.create();
       builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
       builder.addTextBody("text", "hello", ContentType.DEFAULT_BINARY);
       File file = new File("/myfile");
       builder.addBinaryBody("file", file, ContentType.IMAGE_JPEG, file.getName());

       HttpEntity entity = builder.build();
       post.setEntity(entity);
       CloseableHttpResponse responseBody = httpclient.execute(post);
       String responseText = EntityUtils.toString(responseBody.getEntity());
       if(responseBody.getStatusLine().getStatusCode() == 200) {
       }else{
           System.out.println("http error: " + responseBody.getStatusLine().getStatusCode());
       }
       System.out.println(responseText);
   }

设置超时

  RequestConfig requestConfig = RequestConfig.custom()
          .setSocketTimeout(1000) //都是毫秒
          .setConnectTimeout(1000)
          .build();
  HttpGet httpGet = new HttpGet("http://localhost/1");
  httpGet.setConfig(requestConfig);

启用cookie

  HttpClientBuilder builder = HttpClientBuilder.create().setDefaultCookieStore(new BasicCookieStore());
  CloseableHttpClient httpClient = builder.build();

okhttp

http://square.github.io/okhttp/

基本用法

    OkHttpClient client = new OkHttpClient();
    Request request = new Request.Builder().url("https://www.baidu.com").build();
    try (Response response = client.newCall(request).execute()) {
        System.out.println(response.body().string());
    }

上传文件

     RequestBody body = MultipartBody.create(MultipartBody.FORM, new File("/mytest1.jpg"));
     OkHttpClient client = new OkHttpClient();
     Request request = new Request.Builder().url("https://www.baidu.com")
             .post(body)
             .build();
     try (Response response = client.newCall(request).execute()) {
         System.out.println(response.body().string());
     }

POST

     RequestBody body = RequestBody.create(MediaType.get("application/json; charset=utf-8"), "{}");
     OkHttpClient client = new OkHttpClient();
     Request request = new Request.Builder().url("https://www.baidu.com")
             .post(body)
             .build();
     try (Response response = client.newCall(request).execute()) {
         System.out.println(response.body().string());
     }

设置超时

    OkHttpClient.Builder builder = new OkHttpClient.Builder();
    builder.connectTimeout(30, TimeUnit.SECONDS);
    builder.readTimeout(30, TimeUnit.SECONDS);
    builder.writeTimeout(30, TimeUnit.SECONDS);
    OkHttpClient client = builder.build();

websocket

没有实际测试

    OkHttpClient client = new OkHttpClient();
    Request request = new Request.Builder().url("https://www.baidu.com").build();
    WebSocket ws = client.newWebSocket(request, new WebSocketListener() {
        @Override
        public void onOpen(WebSocket webSocket, Response response) {
            super.onOpen(webSocket, response);
        }

        @Override
        public void onMessage(WebSocket webSocket, String text) {
            super.onMessage(webSocket, text);
        }

        @Override
        public void onMessage(WebSocket webSocket, ByteString bytes) {
            super.onMessage(webSocket, bytes);
        }

        @Override
        public void onClosing(WebSocket webSocket, int code, String reason) {
            super.onClosing(webSocket, code, reason);
        }

        @Override
        public void onClosed(WebSocket webSocket, int code, String reason) {
            super.onClosed(webSocket, code, reason);
        }

        @Override
        public void onFailure(WebSocket webSocket, Throwable t, Response response) {
            super.onFailure(webSocket, t, response);
        }
    });
    client.newCall(ws.request()).execute();

jetty httpclient

比较偏门, 算了, 不说了.
http://www.eclipse.org/jetty/

猜你喜欢

转载自blog.csdn.net/wzj_whut/article/details/86990821