SendImage.java 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package cn.com.feishu.provider;
  2. import org.apache.http.HttpEntity;
  3. import org.apache.http.client.methods.CloseableHttpResponse;
  4. import org.apache.http.client.methods.HttpPost;
  5. import org.apache.http.config.Registry;
  6. import org.apache.http.config.RegistryBuilder;
  7. import org.apache.http.conn.socket.ConnectionSocketFactory;
  8. import org.apache.http.conn.socket.PlainConnectionSocketFactory;
  9. import org.apache.http.conn.ssl.NoopHostnameVerifier;
  10. import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
  11. import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
  12. import org.apache.http.entity.mime.MultipartEntityBuilder;
  13. import org.apache.http.entity.mime.content.FileBody;
  14. import org.apache.http.impl.client.BasicCookieStore;
  15. import org.apache.http.impl.client.CloseableHttpClient;
  16. import org.apache.http.impl.client.HttpClients;
  17. import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
  18. import org.apache.http.ssl.SSLContextBuilder;
  19. import org.apache.http.util.EntityUtils;
  20. import java.io.File;
  21. import java.io.IOException;
  22. import java.security.KeyManagementException;
  23. import java.security.KeyStoreException;
  24. import java.security.NoSuchAlgorithmException;
  25. public class SendImage {
  26. public static CloseableHttpClient getHttpClient() {
  27. try {
  28. SSLContextBuilder builder = new SSLContextBuilder();
  29. builder.loadTrustMaterial(null, new TrustSelfSignedStrategy());
  30. SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(builder.build(),
  31. NoopHostnameVerifier.INSTANCE);
  32. Registry<ConnectionSocketFactory> registry = RegistryBuilder.<ConnectionSocketFactory>create()
  33. .register("http", new PlainConnectionSocketFactory())
  34. .register("https", sslConnectionSocketFactory)
  35. .build();
  36. PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(registry);
  37. cm.setMaxTotal(100);
  38. CloseableHttpClient httpclient = HttpClients.custom()
  39. .setSSLSocketFactory(sslConnectionSocketFactory)
  40. .setDefaultCookieStore(new BasicCookieStore())
  41. .setConnectionManager(cm).build();
  42. return httpclient;
  43. } catch (KeyManagementException e) {
  44. e.printStackTrace();
  45. } catch (NoSuchAlgorithmException e) {
  46. e.printStackTrace();
  47. } catch (KeyStoreException e) {
  48. e.printStackTrace();
  49. }
  50. return HttpClients.createDefault();
  51. }
  52. public static String SendImageByApacheHttpClient(File file,String tenantAccessToken) throws IOException {
  53. CloseableHttpClient client = getHttpClient();
  54. HttpPost post = new HttpPost("https://open.feishu.cn/open-apis/image/v4/put/");
  55. final MultipartEntityBuilder builder = MultipartEntityBuilder.create();
  56. FileBody bin = new FileBody(file);
  57. builder.addPart("image", bin);
  58. builder.addTextBody("image_type", "message");
  59. HttpEntity multiPartEntity = builder.build();
  60. post.setEntity(multiPartEntity);
  61. post.setHeader("Authorization", "Bearer "+tenantAccessToken);
  62. CloseableHttpResponse response = client.execute(post);
  63. HttpEntity resEntity = response.getEntity();
  64. if (resEntity == null) {
  65. return "";
  66. }
  67. return EntityUtils.toString(resEntity);
  68. }
  69. }