HttpURLConnection实现java后台上传文件和其他参数

来源:互联网 发布:windows更新失败 编辑:程序博客网 时间:2024/06/07 05:00

最近在对接某第三方视频服务商的接口,使用java在后台调用他们的接口。在对接设置封面时遇到一个问题,他们需要对个参数,且有一个参数的类型为file。苦寻半天,果。遂记录如下。

import java.io.DataOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;/** * @author Administrator * */public class WeihouUtil {    public static void main(String[] args){        setActiveImage("1", "v10624388", "xinchengzhihuics", "451976930", "C:\\Users\\Administrator\\Desktop\\1_yuruixin_china.jpg");    }    /**     * @param auth_type     * @param account     * @param password     * @param webinar_id     * @param image     * @return     */    public static String setActiveImage(String auth_type,String account,String password,String webinar_id,String image ){        String resStr = null;        try{            String boundary = "Boundary-b1ed-4060-99b9-fca7ff59c113"; //Could be any string            String Enter = "\r\n";            File file = new File(image);            FileInputStream fis = new FileInputStream(file);            URL url = new URL("http://e.vhall.com/api/vhallapi/v2/webinar/activeimage");            HttpURLConnection conn = (HttpURLConnection)url.openConnection();            conn.setDoOutput(true);            conn.setDoInput(true);            conn.setRequestMethod("POST");            conn.setUseCaches(false);            conn.setInstanceFollowRedirects(true);            conn.setRequestProperty("Content-Type","multipart/form-data;boundary=" + boundary);             conn.connect();            DataOutputStream dos = new DataOutputStream(conn.getOutputStream());          //part 1            String part1 =  "--" + boundary + Enter                    + "Content-Type: application/octet-stream" + Enter                    + "Content-Disposition: form-data; filename=\""+file.getName()+"\"; name=\"image\"" + Enter + Enter;          //part 2            String part2 = Enter                    + "--" + boundary + Enter                    + "Content-Type: text/plain" + Enter                    + "Content-Disposition: form-data; name=\"webinar_id\"" + Enter + Enter                    + webinar_id + Enter                    + "--" + boundary + "--";            //part 3            String part3 = Enter                    + "--" + boundary + Enter                    + "Content-Type: text/plain" + Enter                    + "Content-Disposition: form-data; name=\"auth_type\"" + Enter + Enter                    + auth_type + Enter                    + "--" + boundary + "--";            //part 4            String part4 = Enter                    + "--" + boundary + Enter                    + "Content-Type: text/plain" + Enter                    + "Content-Disposition: form-data; name=\"account\"" + Enter + Enter                    + account + Enter                    + "--" + boundary + "--";            //part 5            String part5 = Enter                    + "--" + boundary + Enter                    + "Content-Type: text/plain" + Enter                    + "Content-Disposition: form-data; name=\"password\"" + Enter + Enter                    + password + Enter                    + "--" + boundary + "--";            byte[] xmlBytes = new byte[fis.available()];            fis.read(xmlBytes);            dos.writeBytes(part1);            dos.write(xmlBytes);            dos.writeBytes(part2);            dos.writeBytes(part3);            dos.writeBytes(part4);            dos.writeBytes(part5);            dos.flush();            dos.close();            fis.close();            System.out.println("status code: "+conn.getResponseCode());            InputStream in = conn.getInputStream();            int ch;            StringBuilder sb2 = new StringBuilder();            while ((ch = in.read()) != -1)            {                sb2.append((char) ch);            }            resStr = sb2.toString();            System.out.println(resStr);            conn.disconnect();        }catch(Exception e){            e.printStackTrace();        }        return resStr;    }}
阅读全文
0 0