隨筆 - 0, 文章 - 264, 評論 - 170, 引用 - 0
          數據加載中……

          HttpClient PostMethod模擬帶文件上傳+普通字段的http請求(可解決文件為網絡文件的問題)

          代碼示例:
          postMethod = new PostMethod("http://api.t.sina.com.cn/statuses/upload.xml");
          Part[] parts 
          = {new StringPart("source""695132533"), new StringPart("status", URLEncoder.encode(status, "utf-8")), new FilePart("pic", new File("1.jpg"))};
          postMethod.setRequestEntity(
          new MultipartRequestEntity(parts, postMethod.getParams()));

          上例中,MultipartRequestEntity封裝了普通字段和文件字段。

          另注:由于自己的應用中,文件塊不是在本地的,而是來源于網絡,所以FilePart的創建,改為以下代碼:
          URL url = new URL(picUrl);
          URLConnection connection = url.openConnection();
          InputStream is = connection.getInputStream();
          /**  這么寫不對
          int length = is.available();
          byte[] buffer = new byte[length];
          is.read(buffer);
          */

          //應該這樣寫
          ByteArrayOutputStream baos = new ByteArrayOutputStream();
          int len = 0;
          byte[] b = new byte[1024];
          while ((len = is.read(b, 0, b.length)) != -1) {
              baos.write(b, 0, len);
          }
          byte[] buffer =  baos.toByteArray();
          new
           FilePart("pic"new ByteArrayPartSource("pic", buffer))

          posted on 2011-01-19 13:55 小一敗涂地 閱讀(6097) 評論(1)  編輯  收藏 所屬分類: 開源工具、插件相關

          評論

          # re: HttpClient PostMethod模擬帶文件上傳+普通字段的http請求(可解決文件為網絡文件的問題)[未登錄]  回復  更多評論   

          new FilePart("pic", new ByteArrayPartSource("pic", buffer))

          如果new ByteArrayPartSource(文件名, buffer)) 文件名為中文會出現亂碼問題。
          2013-06-06 13:53 | test
          主站蜘蛛池模板: 桐乡市| 吐鲁番市| 岱山县| 沛县| 宣武区| 双流县| 博乐市| 徐水县| 商丘市| 桑植县| 开原市| 微山县| 临泽县| 罗城| 高雄县| 康定县| 云浮市| 汉川市| 西平县| 客服| 长武县| 余江县| 光泽县| 财经| 道孚县| 石城县| 宁南县| 丰县| 广宁县| 霸州市| 洛阳市| 洛川县| 苍南县| 绵阳市| 海林市| 菏泽市| 惠水县| 绥阳县| 当雄县| 阿图什市| 新巴尔虎左旗|