public static String getVideoMediaID(String access_token, HashMap map) throws IOException, KeyStoreException, NoSuchAlgorithmException, CertificateException, KeyManagementException{
String media_id = null;
String url = "https://file.api.weixin.qq.com/cgi-bin/media/uploadvideo?access_token="
+ access_token;
JSONObject jo = JSONObject.fromObject(map);
SSLContextBuilder builder = new SSLContextBuilder();
builder.loadTrustMaterial(null, new TrustSelfSignedStrategy());
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(
builder.build(),SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
CloseableHttpClient client = HttpClients.custom().setSSLSocketFactory(
sslsf).build();
HttpPost httpPost = new HttpPost(url);
StringEntity params = new StringEntity(jo.toString(),"UTF-8");
httpPost.setEntity(params);
CloseableHttpResponse httpResponse = null;
try {
httpResponse = client.execute(httpPost);
HttpEntity entity = httpResponse.getEntity();
String jsonString = EntityUtils.toString(entity);
JSONObject fromObject = JSONObject.fromObject(jsonString);
Object media_idObject = fromObject.get("media_id");
if (media_idObject != null) {
media_id = media_idObject.toString();
}
System.out.println("获取视频的media_id-返回值: "
+ jsonString);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(httpResponse != null){
httpResponse.close();
}
if(client != null){
client.close();
}
}
return media_id;
}
这里用的是忽略公钥验证版,( SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER)信任所有的主机,不对他们进行验证,公钥认证还在研究中。
使用HttpClient4.3的jar包。
有关ssl方面的知识,参见ssl握手流程