通过微信获取素材列表接口,拿到素材后在后台显示这些图片的时候,会出现“此图片来自微信公众平台,未经允许不可引用”的字眼。如下图所示:
也就是说我们无法在自已的系统后台中引用微信的图片显示,解决方法只能是使用动态程序获取微信图片,然后再输出显示了。动态获取图片的时候,需要构造一下referer,让微信以为来路是他们的网址url,具体代码如下:get_wximg.jsp
<%@ page contentType="text/html; charset=UTF-8" language="java" errorPage="" %>
<%@ page import="java.util.*"%>
<%@page import="java.io.*"%>
<%@ include file="../inc/common.jsp"%>
<%
String pic = request.getParameter("pic");
URL url= null;
HttpURLConnection urlconn =null;
InputStream is=null;
try{
url=new URL(pic);
urlconn = (HttpURLConnection) url.openConnection();
urlconn.setRequestProperty("referer", "https://mp.weixin.qq.com/");//构造来路
} catch ( MalformedURLException e) {
}
try{
is=url.openStream();
}catch(IOException e){
}
if(is!=null){
BufferedInputStream inputStream = null;
OutputStream outputStream = null;
byte[] block = new byte[1024];
try {
inputStream = new BufferedInputStream(is);
outputStream = response.getOutputStream();
response.setContentType("image/*"); // 设置返回的文件类型
while (true) {
int readLength = inputStream.read(block);
if (readLength == -1) break;// end of file
outputStream.write(block, 0, readLength);
}
} catch(IOException e){
}finally {
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException ex) {
// just ignore
}
}
if (outputStream != null) {
try {
outputStream.close();
} catch (IOException ex) {
// just ignore
}
}
}
}
%>
上面的jsp程序接收微信图片的地址,然后读取微信图片后原样输出。剩下工作就是把原来引用图片的代码修改一下。原来是:
out.print("<img width=\"60\" height=\"60\" src=\""+m.get("url")+"\" /> ");
修改为:
out.print("<img width=\"60\" height=\"60\" src=\"/api/get_wximg.jsp?pic="+m.get("url")+"\" /> ");
这样图片就可以正常显示了
其实上面get_wximg.jsp程序稍微修改一下,就能实现采集微信公众号图片到本地的功能了。
如若转载,请注明出处:https://www.ixoh.com/21754.html