Следующий мой запрос локона:
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();
}
Я пытаюсь вызвать мою конечную точку API R Rest из моего сообщения Java HTTP.
#* @post /predict
mypredict <- function(data1) {
print(data1)
}
(1) Мой эквивалентный запрос Java HTTP Post правильный?
(2) Я могу вызвать конечную точку отдыха R, используя мою команду curl. Но по какой-то причине, когда я отправил запрос POST через мой Java-код, я вижу, что data1 не передается как часть запроса post. Я вижу эту ошибку в R.
<simpleError in print(data1): argument "data1" is missing, with no default>
Я чувствую, что моя Java-реализация curl неверна. Может кто-нибудь помочь?