Я новичок в веб-сервисах. Я пытаюсь отправить InputStream из приложения android на сервер, использующий функцию Drivers 2.22, например Rest, но я получил ошибку 415 Unsupported media type. Это мой код клиента (я использую AsyncHttpClient из Loopj): код боковогоjersey неподдерживаемый mediatype с @FormDataParam
client.addHeader("Content-Type", "application/octet-stream");
final RequestParams requestParams = new RequestParams();
requestParams.put("file", myInputStream);
client.post("MyUrl", requestParams, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
System.out.println("Success");
}
@Override
public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
if(responseBody != null)
System.out.println(new String(responseBody, StandardCharsets.UTF_8));
System.out.println(error.getMessage());
System.out.println("Failure");
}
});
Сервера:
@Path("/schedule")
public class schedule {
@POST
@Secured
@Consumes(MediaType.APPLICATION_OCTET_STREAM)
public Response getScenario(@FormDataParam("file")InputStream payload){
System.out.println("I'm in");
//Do stuff with payload
return Response.ok().build();
}
Но если вместо @FormDataParam я только положить
public Response getScenario(InputStream payload)
Я получаю мой входной поток без ошибки 415 (естественно, в этом случае inputStream также содержит httpBody).
Поиск в Интернете, я прочитал о проблемах с зависимостями, но все кажется нормально. Вот мой pom.xml и ресурсосбережение Конфигурация:
final ResourceConfig rc = new ResourceConfig().packages("MyPackages", "org.glassfish.jersey.examples.multipart");
rc.register(MultiPartFeature.class);
pom.xml
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.glassfish.jersey</groupId>
<artifactId>jersey-bom</artifactId>
<version>${jersey.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-grizzly2-http</artifactId>
</dependency>
<!-- uncomment this to get JSON support: -->
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-multipart</artifactId>
</dependency>
<dependency>
<groupId>org.jvnet.mimepull</groupId>
<artifactId>mimepull</artifactId>
<version>1.9.6</version>
</dependency>
<properties>
<jersey.version>2.22.1</jersey.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
Я решил через минуту задавая вопрос. – Davide