作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
以下是我的 curl 请求:
curl -X POST --data-urlencode 'data1@/Users/Documents/file.csv' http://localhost:8000/predict
以下是我的等效 Java 实现。
String filePath = inputFilePath;
String url = inputUrl;
File file = new File(filePath);
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost uploadFile = new HttpPost(inputUrl);
uploadFile.addHeader("content-type", "application/x-www-form-urlencoded;charset=utf-8");
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
FileBody fileBody = new FileBody(new File(inputFilePath));
HttpEntity reqEntity = MultipartEntityBuilder.create()
.addPart("data1", fileBody)
.build();
uploadFile.setEntity(reqEntity);
CloseableHttpResponse response = null;
try {
response = httpClient.execute(uploadFile);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
我正在尝试从我的 Java HTTP 帖子调用我的 R Rest API 端点。
#* @post /predict
mypredict <- function(data1) {
print(data1)
}
(1) 我的等效 Java HTTP Post 请求正确吗?(2) 我可以使用curl 命令调用R 休息端点。但由于某种原因,当我通过 Java 代码发送 POST 请求时,我发现 data1 没有作为 post 请求的一部分传递。我在 R 中看到此错误。
<simpleError in print(data1): argument "data1" is missing, with no default>
我觉得我的Java等效curl实现是错误的。有人可以帮忙吗?
最佳答案
您指定内容类型application/x-www-form-urlencoded
(就像curl在本例中所做的那样),但提供与multipart/form-相对应的实际主体(实体) data
这是完全不同的。相反,使用包含(针对您的情况)一个NameValuePair
的URLEncodedFormEntity
,如下所示:
byte[] contents = Files.readAllBytes (new File(filepath).toPath());
List<BasicNameValuePair> list = new ArrayList<BasicNameValuePair>();
list.add(new BasicNameValuePair("data1", new String(contents,charset));
uploadFile.setEntity(new UrlEncodedFormEntity (list));
并且您不需要 addHeader("content-type",...)
因为设置实体会自动提供内容类型 header (和内容长度)。
关于java - java中如何将这个curl请求转换为Http post请求进行文件上传?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53369539/
我有以下正则表达式 /[a-zA-Z0-9_-]/ 当字符串只包含从 a 到z 大小写、数字、_ 和 -。 我的代码有什么问题? 能否请您向我提供一个简短的解释和有关如何修复它的代码示例? //var
我是一名优秀的程序员,十分优秀!