Я пытаюсь выполнить вызов httppost клиента apache в моем коде Java. URL, который мне удалось успешно выполнить с помощью команды curl, был таким, как показано ниже:
curl --insecure -ksS -f -u ":Token" -X POST "https://serverurl/rest/datasource/imports/1234567?pretty=true" -F "query=select * from empschema.employee_table"
Я написал Java-код для генерации URL-адреса, аналогичного URL-адресу команды curl
"https://serverurl/rest/datasource/imports/1234567?pretty=true" -F "query=select * from empschema.employee_table"
, иЯ использую метод Apache клиента HTTP post. Но я продолжаю получать сообщение об ошибке, как показано ниже.
java.net.URISyntaxException: Illegal character in scheme name at index 0: "https://serverurl/rest/datasource/imports/1234567?pretty=true" -F "query=select * from empschema.employee_table"
Может кто-нибудь сказать мне, в чем именно проблема с моим кодом? Я даже попытался удалить «присутствующий в начале и конце URL-адреса» и сгенерировал URL-адрес, как показано ниже
https://serverurl/rest/datasource/imports/1234567?pretty=true" -F "query=select * from empschema.employee_table
, но после вызова httpclient post call он выдает ошибку как
java.net.URISyntaxException: недопустимый символ в запросе с индексом 111:
package com.controller;
@RestController
public class Test {
@RequestMapping(value = "/query/{queryId}", method = RequestMethod.POST, produces = "application/json")
@ApiOperation(value = "This API posts a new dataset using query")
@ApiResponses(value = { @ApiResponse(code = 200, message = "Successfully added new dataset details"),
@ApiResponse(code = 404, message = "Unable to add new dataset details"),
@ApiResponse(code = 500, message = "Internal server error") })
public InputStream DatasourceImport() throws ClientProtocolException,Exception {
String baseUrl="\"https://serverurl/rest/datasource/imports/";
String dataSourceId="1234567";
String query = "select * from empschema.employee_table\"";
String fchar = " -F ";
String url = baseUrl + dataSourceId + "?pretty=true\"" + fchar + "\"query=" + query;
HttpClient client = HttpClientBuilder.create().build();
HttpPost postRequest = new HttpPost(url);
String auth = ":8f5bbe9382f0418d9cf9e5637e177a75";
byte[] encodedAuth = Base64.getEncoder().encode(auth.getBytes(Charset.forName("UTF-8")));
String authHeader = "Basic " + new String(encodedAuth);
postRequest.addHeader(HttpHeaders.AUTHORIZATION, authHeader);
HttpResponse response = client.execute(postRequest);
HttpEntity entity = new BufferedHttpEntity(response.getEntity());
return entity.getContent();
}
}
Я хочу успешно выполнить почтовый вызов и загрузить данные, используя мой метод http post клиента apache.