/** * * sendMultipartDataToHttpServer * 使用post方法请求web服务器,并且当表单数据为:multipart/form-data格式。http请求使用{@link#HTTP_ENCODING}编码<br/> * 返回json数据,支持文件名中文上传和多文件上传,不支持断点上传,要正确编码服务端返回{@link#HTTP_ENCODING}编码<br/> * @param url * @param files 文件表单域 * @param fields 非文件表单域 * @return JSONObject * @throws Exception * @exception * @since 1.0.0 */ public static JSONObject sendMultipartDataToHttpServer(URL url, final Map<String, File> files, final Map<String, String> fields, final UsernamePasswordCredentials credentials) throws IOException ,JSONException,Exception{ URL myurl = null; String queryString = ""; // 其他的表单域 if (fields != null) { for (Map.Entry<String, String> entry : fields.entrySet()) { queryString += "&" + URLEncoder.encode(entry.getKey(),HTTP_ENCODING) + "=" + URLEncoder.encode(entry.getValue(), HTTP_ENCODING); } } if (!queryString.equals("")) { queryString = queryString.replaceFirst("&", "?"); } else { } myurl = new URL(url.getProtocol(), url.getHost(),url.getPort(), url.getPath() + queryString); HttpURLConnection conn = (HttpURLConnection) myurl.openConnection(); conn.setConnectTimeout(UPLOAD_REQUEST_TIMEOUT); conn.setRequestMethod(HTTP_METHOD.POST.toString()); conn.setDoInput(true); conn.setDoOutput(true); conn.setUseCaches(false); String boundary = "laohuidi_" + java.util.UUID.randomUUID().toString() + "_laohuidi"; conn.setRequestProperty( "Accept", "image/gif,image/x-xbitmap,image/jpeg,image/pjpeg,application/vnd.ms-excel,application/vnd.ms-powerpoint,application/msword,application/x-shockwave-flash,application/x-quickviewplus,*/*"); conn.setRequestProperty("keep-alive", "300"); conn.setRequestProperty( "user-agent", "Mozilla/5.0 (Windows; U; Windows NT 5.2; zh-CN; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 GTB6"); conn.setRequestProperty("accept-language", "zh-cn,zh;q=0.5"); conn.setRequestProperty("Connection", "Keep-Alive"); conn.setRequestProperty("Content-Type", "multipart/form-data;boundary="+ boundary); Data