⼩程序客服消息新增临时素材接⼝java实现
今天想在⼩程序的客服信息窗⼝⾥回复⽤户⼀个图⽚信息,发现还需要上传素材,但是⽂档的上传临时素材接⼝写的模模糊糊,⽆奈去百度,⽹上清⼀⾊的PHP实现⽅式,难道我穿越了?PHP已经把java给超越了?
⾔归正传,终于还是到了⼀篇博客的,java实现。现摘录如下,做了⼩部分修改:
1/**
2 * 新增临时素材
3 *
4 * @param fileType
5 * @param filePath
6 * @return
7 * @throws Exception
8*/
9public static JSONObject UploadMeida(String fileType, String filePath) throws Exception {
10// 返回结果
11 String result = null;
12 File file = new File(filePath);
13if (!ists() || !file.isFile()) {
14 logger.info("⽂件不存在");
15throw new IOException("⽂件不存在");
16 }
17 String token = getToken();
18if (token == null) {
19 logger.info("未获取到token");
20throw new IOException("未获取到token");
21 }
22 String urlString = Constants.WX_APP_place("ACCESS_TOKEN", token).replace("TYPE", fileType);
23 URL url = new URL(urlString);
24 HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
25 conn.setRequestMethod("POST");// 以POST⽅式提交表单
26 conn.setDoInput(true);
27 conn.setDoOutput(true);
28 conn.setUseCaches(false);// POST⽅式不能使⽤缓存
29// 设置请求头信息
30 conn.setRequestProperty("Connection", "Keep-Alive");
31 conn.setRequestProperty("Charset", "UTF-8");
32// 设置边界
33 String BOUNDARY = "----------" + System.currentTimeMillis();
34 conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + BOUNDARY);
35// 请求正⽂信息
36// 第⼀部分
37 StringBuilder sb = new StringBuilder();
38 sb.append("--");// 必须多两条道
39 sb.append(BOUNDARY);
40 sb.append("\r\n");
41 sb.append("Content-Disposition: form-data;name=\"media\"; filename=\"" + Name() + "\"\r\n");
42 sb.append("Content-Type:application/octet-stream\r\n\r\n");
43 logger.debug("sb:" + sb);
44
45// 获得输出流
46 OutputStream out = new OutputStream());
47// 输出表头
48 out.String().getBytes("UTF-8"));
49// ⽂件正⽂部分
50// 把⽂件以流的⽅式推送道URL中
51 DataInputStream din = new DataInputStream(new FileInputStream(file));
52int bytes = 0;
53byte[] buffer = new byte[1024];
54while ((bytes = ad(buffer)) != -1) {
55 out.write(buffer, 0, bytes);
56 }
57 din.close();
58// 结尾部分
59byte[] foot = ("\r\n--" + BOUNDARY + "--\r\n").getBytes("UTF-8");// 定义数据最后分割线
60 out.write(foot);
61 out.flush();
62 out.close();
63if (HttpsURLConnection.HTTP_OK == ResponseCode()) {
64
65 StringBuffer strbuffer = null;
66 BufferedReader reader = null;
67try {
68 strbuffer = new StringBuffer();
69 reader = new BufferedReader(new InputStream()));
70 String lineString = null;
71while ((lineString = adLine()) != null) {
有趣的java小程序72 strbuffer.append(lineString);
73
74 }
75if (result == null) {
76 result = String();
77 logger.info("result:" + result);
78 }
79 } catch (IOException e) {
80 ("发送POST请求出现异常!", e);
81 e.printStackTrace();
82 } finally {
83if (reader != null) {
84 reader.close();
85 }
86 }
87
88 }
89 JSONObject jsonObject = JSONObject.parseObject(result);
90return jsonObject;
91
92 }
使⽤的时候直接本地执⾏⼀个main⽅法就OK的
1/**
2 * 上传素材,⽤于获取media_id
3 * @param args
4*/
5public static void main(String[] args) {
6
7 String fileType = "image";
8 String filePath = "E:/testupload/123456.jpg";
9try {
10 JSONObject jsonObject = UploadMeida(fileType, filePath);
11 println(jsonObject);
12 } catch (Exception e) {
13 e.printStackTrace();
14 }
15 }
其实后来这个临时素材不满⾜需求的,因为⽹上说的这种临时素材好像3天就会过期,反正⽂档是啥也没说,只说这是临时素材,囧!我想个⼩程序的永久素材接⼝,然⽽并没有到。只能改⽤图⽂链接回复了,把链接指向⾃⼰服务器上的⼀个图⽚。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论