2015-03-19 19 views
5

Đây là lần đầu tiên tôi gửi yêu cầu nhiều phần và sau khi đào ở đây, tôi thậm chí còn bối rối hơn nên bất kỳ trợ giúp nào về cách "chính xác" sẽ rất được đánh giá cao.Làm thế nào để gửi yêu cầu POST nhiều phần bằng cách sử dụng HttpURLConnection trong java?

Tôi có một hàm, sẽ nhận được: đường dẫn tệp và biểu diễn chuỗi của JSON và gửi yêu cầu POST tới máy chủ bằng cách sử dụng nhiều phần.

Tôi không chắc chắn khi nào nên sử dụng các loại boundary"multipart/form-data" nội dung, và sự khác biệt giữa addPartaddTextBody, và khi (hoặc tại sao) nó luôn luôn được viết Content-Disposition: form-data; name=\

public String foo(String filePath, String jsonRep, Proxy proxy) 
{ 
    File f = new File(filePath); 
    HttpURLConnection connection; 
    connection = (HttpURLConnection) url.openConnection(proxy); 
    connection.setRequestProperty("Content-Type", "multipart/form-data"); // How should I generate boundary? Should it be added here? 

    if (myMethod == "POST") 
    { 
     connection.getOutputStream().write(? Both the json string and the file bytes??); 
     } 


.... checking there is no error code etc.. 

return ReadResponse(connection) // read input stream.. 

Bây giờ tôi không chắc chắn làm thế nào để tiếp tục, và làm thế nào để ghi các file và chuỗi json tôi thấy mã này:

MultipartEntityBuilder builder = MultipartEntityBuilder.create(); 
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE); 
builder.addPart("upfile", fileBody); 
builder.addPart("text1", stringBody1); 
builder.addPart("text2", stringBody2); 

Nhưng tôi dường như không thể hiểu làm thế nào nó được kết nối với 0 của tôi.

Bạn có thể trợ giúp không?

+0

Đó là exacly vấn đề của tôi. Tôi không thể tìm thấy nhiều thông tin về việc sử dụng MultipartEntityBuilder và HttpURLConnection. –

Trả lời

1

Dạng HTML mẫu:

<form method="post" action="http://127.0.0.1/app" enctype="multipart/form-data"> 
<input type="text" name="foo" value="bar"><br> 
<input type="file" name="bin"><br> 
<input type="submit" value="test"> 
</form> 

mã Java cho submiting dưới dạng nhiều phần dữ liệu:

MultipartEntityBuilder mb = MultipartEntityBuilder.create();//org.apache.http.entity.mime 
    mb.addTextBody("foo", "bar"); 
    mb.addBinaryBody("bin", new File("testFilePath")); 
    org.apache.http.HttpEntity e = mb.build(); 

    URLConnection conn = new URL("http://127.0.0.1:8080/app").openConnection(); 
    conn.setDoOutput(true); 
    conn.addRequestProperty(e.getContentType().getName(), e.getContentType().getValue());//header "Content-Type"... 
    conn.addRequestProperty("Content-Length", String.valueOf(e.getContentLength())); 
    OutputStream fout = conn.getOutputStream(); 
    e.writeTo(fout);//write multi part data... 
    fout.close(); 
    conn.getInputStream().close();//output of remote url 
Các vấn đề liên quan