ftp上传后没有网站,聊城汽车网站建设,帝国网站采集管理怎么做,佛系汉化组.wordpress com一直在用java来做微信的二次开发#xff0c;经过一段时间的沉淀总算有了一点门路。其实用java这种强大的语言来做微信的二次开发是很简单的事情。只要解决了加密、https请求的发送、xml的解析这些基本的操作后#xff0c;用java来进行微信二次开发就变的容易了很多。这里我主…一直在用java来做微信的二次开发经过一段时间的沉淀总算有了一点门路。其实用java这种强大的语言来做微信的二次开发是很简单的事情。只要解决了加密、https请求的发送、xml的解析这些基本的操作后用java来进行微信二次开发就变的容易了很多。这里我主要上传一个用httpclient来实现多媒体素材上传的例子。当然也可以使用urlconnection来实现该功能。但是httpclient要简单的多也省心的多。废话不错直接上代码了代码注释很详细。 private static String up_temporary_url https://api.weixin.qq.com/cgi-bin/media/upload;public static void httpsClient() throws Exception {// 获得utf-8编码的mbuilderMultipartEntityBuilder mBuilder get_COMPATIBLE_Builder(UTF-8);/*** 原生的微信使用的url是https://api.weixin.qq.com/cgi-bin/media/upload?* access_token##ACCESS_TOKEN##type##TYPE##* 一般都会使用这个把参数直接携带在url中。我个人不喜欢这样因为既然使用了httpclient完全可以把参数* 设置在我们的body体中。所以我们使用的url是这样的* https://api.weixin.qq.com/cgi-bin/media/upload 然后通过在body体中设置参数来设置* access_token和type这两个字段* * */// 设置type我这里用一个缩略图来做实验所以type是thumbmBuilder.addTextBody(type, thumb);// 设置access_tokenmBuilder.addTextBody(access_token, getAccessToken());// 这里就是我要上传到服务器的多媒体图片mBuilder.addBinaryBody(media, getFile(d:/test.jpg),ContentType.APPLICATION_OCTET_STREAM, getFile(d:/test.jpg).getName());// 建造我们的http多媒体对象HttpEntity he mBuilder.build();// 建立一个sslcontext这里我们信任任何的证书。SSLContext context getTrustAllSSLContext();// 建立socket工厂SSLConnectionSocketFactory factory new SSLConnectionSocketFactory(context);// 建立连接器CloseableHttpClient client HttpClients.custom().setSSLSocketFactory(factory).build();try {// 得到一个post请求的实体HttpPost post getMultipartPost();// 给请求添加参数post.setEntity(he);// 执行请求并获得结果CloseableHttpResponse reponse client.execute(post);try {// 获得返回的内容HttpEntity entity reponse.getEntity();// 输出System.out.println(EntityUtils.toString(entity));// 消耗实体EntityUtils.consume(entity);} finally {// 关闭返回的reponsereponse.close();}} finally {// 关闭clientclient.close();}} private static String getBoundaryStr(String str) {return ------------ str;}private static File getFile(String path) {return new File(path);}private static MultipartEntityBuilder get_COMPATIBLE_Builder(String charSet) {MultipartEntityBuilder result MultipartEntityBuilder.create();result.setBoundary(getBoundaryStr(7da2e536604c8)).setCharset(Charset.forName(charSet)).setMode(HttpMultipartMode.BROWSER_COMPATIBLE);return result;}private static String getAccessToken() {// 这里返回一个access_token我在实际项目中是使用redis来缓存起来的。这里就直接返回了,要改成自己的哦return PFKLPAJ6HqxylpsKM7CWUoFoKeQlvLRRfArUmR9QEji2uWIEh9qsbGQ0eEih8gsnKrtjoCME_PgPV2ut_Wt3XTNmoJLDycpjtID0KItfVk;}private static String getUrl() {return up_temporary_url;}private static HttpPost getMultipartPost() {/* 这里设置一些post的头部信息具体求百度吧 */HttpPost post new HttpPost(getUrl());post.addHeader(Connection, keep-alive);post.addHeader(Accept, */*);post.addHeader(Content-Type, multipart/form-data;boundary getBoundaryStr(7da2e536604c8));post.addHeader(User-Agent,Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0) );return post;}private static SSLContext getTrustAllSSLContext() throws Exception {SSLContext context SSLContexts.custom().loadTrustMaterial(null, new TrustStrategy() {Overridepublic boolean isTrusted(X509Certificate[] arg0, String arg1)throws CertificateException {// 这一句就是信任任何的证书当然你也可以去验证微信服务器的真实性return true;}}).build();return context;}这是最后返回的结果主要就是那个thumb_media_id了用这个就可以给用户发送图片消息了。