使用httpclient模拟表单提交
程序员文章站
2022-07-13 12:52:20
...
文件类型使用FileBody,字符串类型使用StringBody,其它的还有ByteArrayBody,InputStreamBody.
package com.gary.test.upload; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.io.InputStream; 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.entity.mime.content.StringBody; import org.apache.http.impl.client.DefaultHttpClient; /** * Client * @author gary * */ public class Client { public static void main(String[] args) throws Exception { String url = "http://localhost:8080/ssh/manage/Disk_add.action"; String filePath = "test.mp3"; HttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(url); MultipartEntity reqEntity = new MultipartEntity(); httpPost.setEntity(reqEntity); /** file param name */ FileBody bin = new FileBody(new File(filePath)); reqEntity.addPart("Filedata", bin); /** String param name */ StringBody userId = new StringBody("1"); reqEntity.addPart("userId", userId); System.out.println("executing: " + httpPost.getRequestLine()); HttpResponse response = httpClient.execute(httpPost); HttpEntity responseEntity = response.getEntity(); System.out.println("----------------------------------------"); System.out.println(response.getStatusLine()); if (responseEntity != null){ System.out.println("Response content: " + inputStream2String(responseEntity.getContent())); } httpClient.getConnectionManager().shutdown(); } public static String inputStream2String(InputStream is) throws IOException { ByteArrayOutputStream baos = new ByteArrayOutputStream(); int i = -1; while ((i = is.read()) != -1) { baos.write(i); } return baos.toString(); } }
Client运行结果
executing: POST http://localhost:8080/ssh/manage/Disk_add.action HTTP/1.1
----------------------------------------
HTTP/1.1 200 OK
Response content: 上传成功
Server运行结果
2011-01-31 21:59:33 DEBUG [ssh.action.DiskAction.add(DiskAction.java:98)] - 成功
上传文件test.mp3到D:\AEclipse2\workspace\myeclipse\ssh\WebRoot\upload\netdisk129
64823729805uYix