小程序
小游戏
企业微信
微信支付
扫描小程序码分享
问题一:小程序-内容安全 security.imgSecCheck 报错一直为47001,请帮忙看能否查一下是什么原因?{"errcode":47001,"errmsg":"data format error hint: [pmW6Ia0575c393]"}
问题二:security.imgSecCheck 这个接口中的图片是不是要与发起post连接的域名要一致?
1 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
final String newLine = "\r\n";
final String boundaryPrefix = "--";
// 定义数据分隔线
String BOUNDARY = "============" + "1234567890" + "============";
// 服务器的域名
URL url = new URL(urls); // 建立http连接
System.out.println("url:"+url); // 创建url资源
HttpURLConnection conn = (HttpURLConnection) url.openConnection(); // 设置允许输出
conn.setRequestMethod("POST"); // 设置维持长连接
conn.setDoOutput(true); // 设置允许输入
conn.setDoInput(true); // 设置不用缓存
conn.setUseCaches(false); // 设置传递方式
conn.setRequestProperty("Connection", "Keep-Alive"); // 设置文件字符集:
conn.setRequestProperty("Charset", "UTF-8"); // 转换为字节数组
conn.setRequestProperty("Content-Type","multipart/form-data; boundary=" + BOUNDARY);
//获取图片URL
imgUrl = new String(readFromUrl(storageUrl),"UTF-8");
byte[] imgByte = readFromUrl(imgUrl);
System.out.println("imgUrl:" + imgUrl);
// 上传文件
StringBuilder sb = new StringBuilder();
StringBuffer sb1=new StringBuffer();
sb.append(boundaryPrefix);
sb.append(BOUNDARY);
sb.append(newLine);
// 文件参数
sb.append("Content-Disposition: form-data;name=\"image\";filename=\"" + imgUrl +"\"");
sb.append("Content-Type:"+URLConnection.guessContentTypeFromName(imgUrl));
// 参数头设置完以后需要两个换行,然后才是参数内容
System.out.println("-----111111-----");
conn.connect();
OutputStream out = new DataOutputStream(conn.getOutputStream());
byte[] head = sb.toString().getBytes("utf-8");
out.write(head);
System.out.println("sb:\n\r");
System.out.println(sb.toString());
InputStream in = new URL(imgUrl).openStream();
byte[] bufferOut = new byte[1024];
int bytesRead = -1;
while ((bytesRead = in.read(bufferOut)) != -1) {
out.write(bufferOut, 0, bytesRead);
}
in.close();
System.out.println(imgUrl);
byte[] foot = ("\r\n" + boundaryPrefix + BOUNDARY + boundaryPrefix + "\r\n").getBytes("utf-8");
System.out.println("\r\n" + boundaryPrefix + BOUNDARY + boundaryPrefix + "\r\n");
out.write(foot);
out.flush();
out.close();
LOG是:
tomcat default url:https://api.weixin.qq.com/wxa/msg_sec_check?access_token=31_XXXXXXXXNIQ
tomcat default imgUrl:https://XXX/9D9000001B78E1F0014601F49.jpg
tomcat default -----111111-----
tomcat default sb:
tomcat default
tomcat default --============1234567890============
tomcat default Content-Disposition: form-data;name="image";filename="https://XXX/9D9000001B78E1F0014601F49.jpg"
tomcat default Content-Type:image/jpeg
tomcat default https://XXX/9D9000001B78E1F0014601F49.jpg
tomcat default --============1234567890============--
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
final String newLine = "\r\n";
final String boundaryPrefix = "--";
// 定义数据分隔线
String BOUNDARY = "============" + "1234567890" + "============";
// 服务器的域名
URL url = new URL(urls); // 建立http连接
System.out.println("url:"+url); // 创建url资源
HttpURLConnection conn = (HttpURLConnection) url.openConnection(); // 设置允许输出
conn.setRequestMethod("POST"); // 设置维持长连接
conn.setDoOutput(true); // 设置允许输入
conn.setDoInput(true); // 设置不用缓存
conn.setUseCaches(false); // 设置传递方式
conn.setRequestProperty("Connection", "Keep-Alive"); // 设置文件字符集:
conn.setRequestProperty("Charset", "UTF-8"); // 转换为字节数组
conn.setRequestProperty("Content-Type","multipart/form-data; boundary=" + BOUNDARY);
//获取图片URL
imgUrl = new String(readFromUrl(storageUrl),"UTF-8");
byte[] imgByte = readFromUrl(imgUrl);
System.out.println("imgUrl:" + imgUrl);
// 上传文件
StringBuilder sb = new StringBuilder();
StringBuffer sb1=new StringBuffer();
sb.append(boundaryPrefix);
sb.append(BOUNDARY);
sb.append(newLine);
// 文件参数
sb.append("Content-Disposition: form-data;name=\"image\";filename=\"" + imgUrl +"\"");
sb.append(newLine);
sb.append("Content-Type:"+URLConnection.guessContentTypeFromName(imgUrl));
// 参数头设置完以后需要两个换行,然后才是参数内容
sb.append(newLine);
sb.append(newLine);
System.out.println("-----111111-----");
conn.connect();
OutputStream out = new DataOutputStream(conn.getOutputStream());
byte[] head = sb.toString().getBytes("utf-8");
out.write(head);
System.out.println("sb:\n\r");
System.out.println(sb.toString());
InputStream in = new URL(imgUrl).openStream();
byte[] bufferOut = new byte[1024];
int bytesRead = -1;
while ((bytesRead = in.read(bufferOut)) != -1) {
out.write(bufferOut, 0, bytesRead);
}
in.close();
System.out.println(imgUrl);
byte[] foot = ("\r\n" + boundaryPrefix + BOUNDARY + boundaryPrefix + "\r\n").getBytes("utf-8");
System.out.println("\r\n" + boundaryPrefix + BOUNDARY + boundaryPrefix + "\r\n");
out.write(foot);
out.flush();
out.close();
LOG是:
tomcat default url:https://api.weixin.qq.com/wxa/msg_sec_check?access_token=31_XXXXXXXXNIQ
tomcat default imgUrl:https://XXX/9D9000001B78E1F0014601F49.jpg
tomcat default -----111111-----
tomcat default sb:
tomcat default
tomcat default --============1234567890============
tomcat default Content-Disposition: form-data;name="image";filename="https://XXX/9D9000001B78E1F0014601F49.jpg"
tomcat default Content-Type:image/jpeg
tomcat default
tomcat default https://XXX/9D9000001B78E1F0014601F49.jpg
tomcat default
tomcat default --============1234567890============--