java - 如何在java中使用http请求发送文件?

标签 java

如何在java中使用http请求发送文件? 我看到问题 Send image file using java HTTP POST connectionsUpload files from Java client to a HTTP server 但它们太老了,不再起作用了。

最佳答案

Apache HttpClient 的分段文件上传示例中给出了一个很好的示例

http://svn.apache.org/viewvc/httpcomponents/oac.hc3x/trunk/src/examples/MultipartFileUploadApp.java?view=markup

实际发布文件的部分是

            String targetURL = cmbURL.getSelectedItem().toString();
            // add the URL to the combo model if it's not already there
            if (!targetURL
                .equals(
                    cmbURLModel.getElementAt(
                        cmbURL.getSelectedIndex()))) {
                cmbURLModel.addElement(targetURL);
            }

            PostMethod filePost = new PostMethod(targetURL);

            filePost.getParams().setBooleanParameter(HttpMethodParams.USE_EXPECT_CONTINUE,
            cbxExpectHeader.isSelected());
            try {
                appendMessage("Uploading " + targetFile.getName() + " to " + targetURL);
                Part[] parts = {
                    new FilePart(targetFile.getName(), targetFile)
                };
                filePost.setRequestEntity(
                    new MultipartRequestEntity(parts, filePost.getParams())
                    );
                HttpClient client = new HttpClient();
                client.getHttpConnectionManager().
                    getParams().setConnectionTimeout(5000);
                int status = client.executeMethod(filePost);
                if (status == HttpStatus.SC_OK) {
                    appendMessage(
                        "Upload complete, response=" + filePost.getResponseBodyAsString()
                    );
                } else {
                    appendMessage(
                        "Upload failed, response=" + HttpStatus.getStatusText(status)
                    );
                }
            } catch (Exception ex) {
                appendMessage("ERROR: " + ex.getClass().getName() + " "+ ex.getMessage());
                ex.printStackTrace();
            } finally {
                filePost.releaseConnection();
            }

希望对您有帮助。

关于java - 如何在java中使用http请求发送文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32656611/

相关文章:

Java:静态初始化 block 中的方法比主方法中的方法慢

java - 如何用随机整数 [1,9] 填充 2D 数组,并打印出每行的行总和以及每列的列总和的 2D 数组?

java - Log4j 反射(reflect)配置文件的变化?

java - 在 Selenium 的负面测试之间关闭和打开新的 WebDriver session 是否是正确的方法?

java - 使用 java 流将 String[] str = {"a","b","c","d","e","f"} 映射为 {a=b, c=d, e=f}

java - 错误 : The Android Gradle plugin supports only Kotlin Gradle plugin version 1. 3.0 及更高版本

java - 如何将具有不同位数的整数的数组表示形式相加?

java - Java 7 中对象静态方法的原因

java - 让扫描仪读取文本文件

java - (JAVA)将十进制转换为二进制编码的十进制?