java实现上传网络图片到微信临时素材
本文实例为大家分享了java实现上传网络图片到微信临时素材的具体代码,供大家参考,具体内容如下
packageorg.afuos.playcontrol.service;
importcom.alibaba.fastjson.JSON;
importcom.alibaba.fastjson.JSONObject;
importjava.io.*;
importjava.net.HttpURLConnection;
importjava.net.URL;
/**
*CreatedbyMohonon2017/8/10.
*/
publicclassUploadPicToWx{
/**
*网络图片上传到微信服务器
*
*@paramurlPath图片路径
*@returnJSONObject
*@throwsException
*/
publicStringgetMediaIdFromUrl(StringurlPath,StringfileType)throwsException{
Stringresult=null;
Stringurl="http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token=Access_token&type="+fileType+"";
StringfileName=urlPath.substring(urlPath.lastIndexOf("/")+1);
//获取网络图片
URLmediaUrl=newURL(urlPath);
HttpURLConnectionmeidaConn=(HttpURLConnection)mediaUrl.openConnection();
meidaConn.setDoOutput(true);
meidaConn.setRequestMethod("GET");
/**
*第一部分
*/
URLurlObj=newURL(url);
HttpURLConnectioncon=(HttpURLConnection)urlObj.openConnection();
con.setRequestMethod("POST");//以Post方式提交表单,默认get方式
con.setDoInput(true);
con.setDoOutput(true);
con.setUseCaches(false);//post方式不能使用缓存
//设置请求头信息
con.setRequestProperty("Connection","Keep-Alive");
con.setRequestProperty("Charset","UTF-8");
//设置边界
StringBOUNDARY="----------"+System.currentTimeMillis();
con.setRequestProperty("Content-Type","multipart/form-data;boundary="+BOUNDARY);
//请求正文信息
//第一部分:
StringBuildersb=newStringBuilder();
sb.append("--");//必须多两道线
sb.append(BOUNDARY);
sb.append("\r\n");
sb.append("Content-Disposition:form-data;name=\"media\";filename=\""+fileName+"\"\r\n");
sb.append("Content-Type:application/octet-stream\r\n\r\n");
byte[]head=sb.toString().getBytes("utf-8");
//获得输出流
OutputStreamout=newDataOutputStream(con.getOutputStream());
//输出表头
out.write(head);
//文件正文部分
//把文件已流文件的方式推入到url中
DataInputStreamin=newDataInputStream(meidaConn.getInputStream());
intbytes=0;
byte[]bufferOut=newbyte[1024];
while((bytes=in.read(bufferOut))!=-1){
out.write(bufferOut,0,bytes);
}
in.close();
//结尾部分
byte[]foot=("\r\n--"+BOUNDARY+"--\r\n").getBytes("utf-8");//定义最后数据分隔线
out.write(foot);
out.flush();
out.close();
meidaConn.disconnect();
StringBufferbuffer=newStringBuffer();
BufferedReaderreader=null;
try{
//定义BufferedReader输入流来读取URL的响应
reader=newBufferedReader(newInputStreamReader(con.getInputStream()));
Stringline=null;
while((line=reader.readLine())!=null){
buffer.append(line);
}
if(result==null){
result=buffer.toString();
}
}catch(IOExceptione){
log.info("发送POST请求出现异常!{}",e);
e.printStackTrace();
thrownewIOException("数据读取异常");
}finally{
if(reader!=null){
reader.close();
}
}
JSONObjectjsonObj=JSON.parseObject(result);
log.info("getMediaIdjsonObj:{}",jsonObj);
returnjsonObj.getString("media_id");
}
}
来源:UploadPicToWx.java
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。