Java可以使用HttpClient发送Http请求、上传文件等,非常的方便
maven
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.3</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.5.3</version>
</dependency>
上传代码1:
public static void upload() {
CloseableHttpClient httpclient = HttpClients.createDefault()
//CloseableHttpClient httpclient = HttpClientBuilder.create().build()
try {
HttpPost httppost = new HttpPost("http://localhost:8080/WEY.WebApp/auth/right/right/receiveFile.html")
RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(200000).setSocketTimeout(200000).build()
httppost.setConfig(requestConfig)
FileBody bin = new FileBody(new File("F:\\Ken\\abc.pdf"))
StringBody comment = new StringBody("This is comment", ContentType.TEXT_PLAIN)
HttpEntity reqEntity = MultipartEntityBuilder.create().addPart("file", bin).addPart("comment", comment).build()
httppost.setEntity(reqEntity)
System.out.println("executing request " + httppost.getRequestLine())
CloseableHttpResponse response = httpclient.execute(httppost)
try {
System.out.println(response.getStatusLine())
HttpEntity resEntity = response.getEntity()
if (resEntity != null) {
String responseEntityStr = EntityUtils.toString(response.getEntity())
System.out.println(responseEntityStr)
System.out.println("Response content length: " + resEntity.getContentLength())
}
EntityUtils.consume(resEntity)
} finally {
response.close()
}
} catch (ClientProtocolException e) {
e.printStackTrace()
} catch (IOException e) {
e.printStackTrace()
} finally {
try {
httpclient.close()
} catch (IOException e) {
e.printStackTrace()
}
}
}
上传代码2:
public static void upload2() throws ClientProtocolException, IOException{
CloseableHttpClient httpClient = HttpClientBuilder.create().build()
CloseableHttpResponse httpResponse = null
RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(200000).setSocketTimeout(200000000).build()
HttpPost httpPost = new HttpPost("http://localhost:8080/WEY.WebApp/auth/right/right/receiveFile.html")
httpPost.setConfig(requestConfig)
MultipartEntityBuilder multipartEntityBuilder = MultipartEntityBuilder.create()
//multipartEntityBuilder.setCharset(Charset.forName("UTF-8"))
//File file = new File("F:\\Ken\\1.PNG")
//FileBody bin = new FileBody(file)
File file = new File("F:\\Ken\\abc.pdf")
//multipartEntityBuilder.addBinaryBody("file", file,ContentType.create("image/png"),"abc.pdf")
//当设置了setSocketTimeout参数后,以下代码上传PDF不能成功,将setSocketTimeout参数去掉后此可以上传成功。上传图片则没有个限制
//multipartEntityBuilder.addBinaryBody("file",file,ContentType.create("application/octet-stream"),"abd.pdf")
multipartEntityBuilder.addBinaryBody("file",file)
//multipartEntityBuilder.addPart("comment", new StringBody("This is comment", ContentType.TEXT_PLAIN))
multipartEntityBuilder.addTextBody("comment", "this is comment")
HttpEntity httpEntity = multipartEntityBuilder.build()
httpPost.setEntity(httpEntity)
httpResponse = httpClient.execute(httpPost)
HttpEntity responseEntity = httpResponse.getEntity()
int statusCode= httpResponse.getStatusLine().getStatusCode()
if(statusCode == 200){
BufferedReader reader = new BufferedReader(new InputStreamReader(responseEntity.getContent()))
StringBuffer buffer = new StringBuffer()
String str = ""
while(!StringUtil.isRealEmpty(str = reader.readLine())) {
buffer.append(str)
}
System.out.println(buffer.toString())
}
httpClient.close()
if(httpResponse!=null){
httpResponse.close()
}
}
普通POST请求
public String post() throws ClientProtocolException, IOException{
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
CloseableHttpResponse httpResponse = null;
HttpPost httpPost = new HttpPost("http://localhost:8080/WEY.WebApp/auth/right/right/receivePost.html");
RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(20000).setSocketTimeout(22000).build();
httpPost.setConfig(requestConfig);
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("user.loginId", "Lin"));
params.add(new BasicNameValuePair("user.employeeName","令狐冲"));
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(params,Charset.forName("UTF-8"));
httpPost.setEntity(entity);
httpResponse = httpClient.execute(httpPost);
HttpEntity responseEntity = httpResponse.getEntity();
if(responseEntity!=null){
String content = EntityUtils.toString(responseEntity,"UTF-8");
System.out.println(content);
}
if(httpResponse!=null){
httpResponse.close();
}
if(httpClient!=null){
httpClient.close();
}
return null;
}
原文来自:http://www.cnblogs.com/foxting/p/7895724.html