Tôi sử dụng bộ thư viện HttpComponent và lập trình bằng ngôn ngữ java.
Dưới đây là mã nguồn tôi trích xuất từ bộ unitest của tôi:
public class testUploadFile {Trong đoạn mã trên bạn chú ý cho tôi các dòng được bôi màu xanh.
static String url = "http://127.0.0.1:8080/web/convert/document.pdf";
static String path = "/home/user/NOTICE.txt";
public static void main(String[] args) throws Exception{
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
reqEntity.addPart("string_field", new StringBody("field value"));
FileBody bin = new FileBody(new File(path));
reqEntity.addPart("attachment_field", bin);
httpPost.setEntity(reqEntity);
System.out.println("Sending request " + httpPost.getRequestLine());
HttpResponse response = httpClient.execute(httpPost);
HttpEntity resEntity = response.getEntity();
if(resEntity != null){
String page = EntityUtils.toString(resEntity);
System.out.println("Page: " + page);
}
}
}
- HttpMultipartMode.BROWSER_COMPATIBLE tôi chưa rõ được vì sao phải dùng tham số với giá trị như này thì mới có thể upload file lên được, nếu bạn dùng giá trị MultipartEntity thì có vẻ là không thể chạy được, ít ra là với phiên bản của thư viện tôi đang dùng.
- FileBody: tôi dùng để lấy nội dung file cần gửi.
- reqEntity.addPart: tôi dùng để đính nội dung file cần gửi vào request.
- Ngoài ra với hàm addPart bạn có thể dùng để đính thêm nhiều thông tin nữa vào cho request để gửi lên server, thường là các tham số thêm.
- httpClient.execute: được dùng để gửi request lên server.
- response.getEntity: được dùng để nhận response của server.
Chúc bạn thành công.
Edit: Ngoài ra bạn có thể thêm header vào các request bằng cách thêm vào đoạn mã sau:
httpPost.setHeader(tên_tham_số, giá_trị);
Ví dụ:
token = "JSESSIONID=1csup075gbkbm; ZM_TEST=true; ZM_AUTH_TOKEN=0_e83a2b9e2617f747bae138454d4dee946814b924_69643d33363a34636639303538612d656339392d343061662d613234312d3933666539353230373963313b6578703d31333a313335313030373830393138313b747970653d363a7a696d6272613b"; httpPost.setHeader("Cookie", token);
Không có nhận xét nào:
Đăng nhận xét