SendImage.java 4.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. package cn.com.feishu.provider;
  2. import org.apache.http.Header;
  3. import org.apache.http.HttpEntity;
  4. import org.apache.http.client.methods.CloseableHttpResponse;
  5. import org.apache.http.client.methods.HttpPost;
  6. import org.apache.http.config.Registry;
  7. import org.apache.http.config.RegistryBuilder;
  8. import org.apache.http.conn.socket.ConnectionSocketFactory;
  9. import org.apache.http.conn.socket.PlainConnectionSocketFactory;
  10. import org.apache.http.conn.ssl.NoopHostnameVerifier;
  11. import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
  12. import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
  13. import org.apache.http.entity.mime.MultipartEntityBuilder;
  14. import org.apache.http.entity.mime.content.FileBody;
  15. import org.apache.http.impl.client.BasicCookieStore;
  16. import org.apache.http.impl.client.CloseableHttpClient;
  17. import org.apache.http.impl.client.HttpClients;
  18. import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
  19. import org.apache.http.ssl.SSLContextBuilder;
  20. import org.apache.http.util.EntityUtils;
  21. import java.io.File;
  22. import java.io.IOException;
  23. import java.security.KeyManagementException;
  24. import java.security.KeyStoreException;
  25. import java.security.NoSuchAlgorithmException;
  26. public class SendImage {
  27. public static CloseableHttpClient getHttpClient() {
  28. try {
  29. SSLContextBuilder builder = new SSLContextBuilder();
  30. builder.loadTrustMaterial(null, new TrustSelfSignedStrategy());
  31. SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(builder.build(),
  32. NoopHostnameVerifier.INSTANCE);
  33. Registry<ConnectionSocketFactory> registry = RegistryBuilder.<ConnectionSocketFactory>create()
  34. .register("http", new PlainConnectionSocketFactory())
  35. .register("https", sslConnectionSocketFactory)
  36. .build();
  37. PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(registry);
  38. cm.setMaxTotal(100);
  39. CloseableHttpClient httpclient = HttpClients.custom()
  40. .setSSLSocketFactory(sslConnectionSocketFactory)
  41. .setDefaultCookieStore(new BasicCookieStore())
  42. .setConnectionManager(cm).build();
  43. return httpclient;
  44. } catch (KeyManagementException e) {
  45. e.printStackTrace();
  46. } catch (NoSuchAlgorithmException e) {
  47. e.printStackTrace();
  48. } catch (KeyStoreException e) {
  49. e.printStackTrace();
  50. }
  51. return HttpClients.createDefault();
  52. }
  53. public static String SendImageByApacheHttpClient(File file,String tenantAccessToken) throws IOException {
  54. CloseableHttpClient client = getHttpClient();
  55. HttpPost post = new HttpPost("https://open.feishu.cn/open-apis/image/v4/put/");
  56. final MultipartEntityBuilder builder = MultipartEntityBuilder.create();
  57. FileBody bin = new FileBody(file);
  58. builder.addPart("image", bin);
  59. builder.addTextBody("image_type", "message");
  60. HttpEntity multiPartEntity = builder.build();
  61. post.setEntity(multiPartEntity);
  62. post.setHeader("Authorization", "Bearer "+tenantAccessToken);
  63. CloseableHttpResponse response = client.execute(post);
  64. System.out.println("http response code:" + response.getStatusLine().getStatusCode());
  65. for (Header header: response.getAllHeaders()) {
  66. System.out.println(header.toString());
  67. }
  68. HttpEntity resEntity = response.getEntity();
  69. if (resEntity == null) {
  70. System.out.println("never here?");
  71. return "";
  72. }
  73. System.out.println("Response content length: " + resEntity.getContentLength());
  74. return EntityUtils.toString(resEntity);
  75. }
  76. public static void main(String[] args) throws Exception {
  77. File file = new File("D:\\android\\15812888.jpeg");
  78. String token = AuthProvider.getTenantAccessToken();
  79. String result = SendImageByApacheHttpClient(file,token);
  80. System.out.println(result);
  81. /**
  82. * {"code":0,"msg":"ok","data":{"image_key":"img_f8bb4cdf-fd0b-4c29-98c5-5147efd4b13g"}}
  83. */
  84. }
  85. }