开始,使用下面方法也可以发送,但是MultipartEntity和DefaultHttpClient的创建方法都过时了,所以使用下面方法进行代替。
public static String sendPost(String urlString, java.io.File file) { String result = ""; try { if (file.exists()) { HttpClient client = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(urlString); MultipartEntity entity = new MultipartEntity(); entity.addPart("file", new FileBody(file)); httpPost.setEntity(entity); HttpResponse response = client.execute(httpPost); HttpEntity responseEntity = response.getEntity(); result = EntityUtils.toString(responseEntity); System.out.println(result); } } catch (Exception e) { Log.error("发送POST请求出现异常!", e); } return result.toString(); }一、使用MultipartEntityBuilder,引入加入包仅供参考(可能少,可能多部分)
import cn.com.smartall.util.Log; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.mime.MultipartEntity; import org.apache.http.entity.mime.content.FileBody; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.util.EntityUtils; public static String sendPost(String urlString, java.io.File file) { String result = null; CloseableHttpClient client = HttpClients.createDefault(); HttpResponse response = null; try { if (file.exists()) { HttpPost httpPost = new HttpPost(urlString); MultipartEntityBuilder builder = MultipartEntityBuilder.create(); builder.addBinaryBody( "file", new FileInputStream(file), ContentType.APPLICATION_OCTET_STREAM, file.getName() ); HttpEntity entity = builder.build();// 生成 HTTP POST 实体 httpPost.setEntity(entity); response = client.execute(httpPost); result = StreamUtils.copyToString(response.getEntity().getContent(), Charset.forName("UTF-8")); System.out.println(result); } } catch (Exception e) { result = e.getMessage(); Log.error("发送POST请求出现异常!", e); } return result; }二、java post请求,直接发送二进制文件(木有测试,供参考)
public static String sendPost(String urlString, byte[] bytes) { StringBuffer result = new StringBuffer(); try { OutputStream out = null; InputStream in = null; DataOutputStream outWrite = null; InputStreamReader inReader = null; BufferedReader buffReader = null; String line = ""; URL url = new URL(urlString); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); //post请求 conn.setRequestMethod("POST"); //连接超时、读取超时。防止请求被阻塞 conn.setConnectTimeout(6000); conn.setReadTimeout(6000); //是否从httpUrlConnection读入,默认为false,当为post请求时需要设置为true //post的请求参数在http正文中,get的请求参数在url后 conn.setDoOutput(true); //是否向httpUrlConnection输出,默认为true conn.setDoInput(true); //二进制数据 conn.setRequestProperty("Content-Type", "application/octet-stream"); conn.setRequestProperty("Accept-Charset", "utf-8"); //缓存 conn.setUseCaches(false); try { out = conn.getOutputStream(); outWrite = new DataOutputStream(out); outWrite.write(bytes); outWrite.flush(); if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) { in = conn.getInputStream(); } else { in = conn.getErrorStream(); } buffReader = new BufferedReader(new InputStreamReader(in, "UTF-8")); while ((line = buffReader.readLine()) != null) { result.append(line); } } finally { if (out != null) { out.close(); } if (in != null) { in.close(); } if (conn != null) { conn.disconnect(); } } } catch (Exception e) { Log.error("发送POST请求出现异常!", e); } return result.toString(); }