国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

httpclient3.0 上傳文件名及field中文解決方法

2019-11-18 11:19:38
字體:
來源:轉載
供稿:網友

最近利用httpclient來做模擬表單提交的程序,發現這個咚咚對中文的支持實在是差,查看源碼后發現問題出現
在org/apache/commons/httpclient/util這個包里的EncodingUtil.java,和org/apache/commons/httpclient/methods/multipart這個包里的StringPart.java及FilePart.java這三個類里面。

先說說EncodingUtil這個類,雖然你可以在第50行看到
PRivate static final String DEFAULT_CHARSET = "iso-8859-1";
這樣的定義,但你在往下看就會發現getAsciiBytes(final String data)這個里并沒有用這定義的編碼來對數據進行encoding.而是用了US-ASCII碼來進行encoding的。程序如下:
public static byte[] getAsciiBytes(final String data) {

        if (data == null) {
            throw new IllegalArgumentException("Parameter may not be null");
        }

        try {
            return data.getBytes("US-ASCII");  //就是這一句拉
        } catch (UnsupportedEncodingException e) {
            throw new HttpClientError("HttpClient requires ASCII support");
        }
    }


把編碼該成你自己想要的吧。在這里解決了上傳文件名為中文的問題。接下來解決field字段內容為中文的的問題
修改StringPart中58行:
 public static final String DEFAULT_CHARSET = "US-ASCII";
同理,改成你自己想要的編碼
然后重新編譯打包。記得把logging 和codec 這兩個包引進項目里。否則編譯會出一堆錯誤。

其實在StringPart這個類里是提供了自定義編碼格式的方法。可是在FilePart類里沒有實現而已。
第79行:
public StringPart(String name, String value, String charset) {

        super(
            name,
            DEFAULT_CONTENT_TYPE,
            charset == null ? DEFAULT_CHARSET : charset,
            DEFAULT_TRANSFER_ENCODING
        );
        if (value == null) {
            throw new IllegalArgumentException("Value may not be null");
        }
        if (value.indexOf(0) != -1) {
            // See RFC 2048, 2.8. "8bit Data"
            throw new IllegalArgumentException("NULs may not be present in string parts");
        }
        this.value = value;
    }
你可以在FilePart里把這個方法實現了。這樣你就可以指定編碼格式提交表單了。個人覺得這個方法比修改默認編碼強。靈活性高些。

其實我只想模擬表單提交,在applet中實現文件上傳,本想偷懶不自己寫模擬表單提交這塊的。用了httpclient這個開源包。可是打完applet的jar包發現這個包竟然350多k。讓我非常的郁悶。看來還是需要自己寫模擬表單實現提交了。起碼打完包也不會超過20k。

假如需要轉載,請注明出處和作者。謝謝
QQ:221704
MSN:flyly@yeah.net
EMAIL:zhangfl@sports.cn



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 叙永县| 成都市| 略阳县| 上饶市| 盐边县| 榆林市| 保定市| 宁化县| 临湘市| 岚皋县| 隆化县| 邵阳市| 远安县| 澄城县| 隆回县| 宣汉县| 芜湖县| 昂仁县| 云霄县| 叶城县| 灵川县| 洛宁县| 巴马| 大港区| 尚义县| 成安县| 阿巴嘎旗| 大冶市| 上林县| 阿图什市| 丽水市| 新巴尔虎左旗| 黄陵县| 白山市| 陇南市| 方城县| 绍兴县| 沈丘县| 饶平县| 囊谦县| 衡阳县|