Chcę napisać prostego klienta 2, aby przesłać plik. Używam Jersey 2.10.1 i napisał następujący kod serwera:Klient wysyłania 2 kart wieloczęściowych
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.APPLICATION_JSON)
public Response uploadFile(
@FormDataParam("file") InputStream aUploadedInputStream,
@FormDataParam("file") FormDataContentDisposition aFileDetail) {
UploadedFile uploadedFile = new UploadedFile();
uploadedFile.setOriginalFileName(aFileDetail.getFileName());
uploadedFile.setFileSize(aFileDetail.getSize());
saveToFile(aUploadedInputStream, aFileDetail.getType(), uploadedFile);
databaseHelper.saveInDatabase(uploadedFile);
return Response.status(200).build();
}
(„UploadedFile” jest klasa zwyczaj, aby zapisać informacje do pliku w bazie danych)
i to jest mój kod klienta :
kodprivate static final String TARGET_URL = "http://localhost:49158/rest/service/upload";
public Slimclient() {
Client client = ClientBuilder.newBuilder()
.register(MultiPartFeature.class).build();
WebTarget webTarget = client.target(TARGET_URL);
MultiPart multiPart = new MultiPart();
FileDataBodyPart fileDataBodyPart = new FileDataBodyPart("file",
new File("C:/Users/Nicklas2751/Desktop/test.txt"), MediaType.APPLICATION_OCTET_STREAM_TYPE);
multiPart.bodyPart(fileDataBodyPart);
Response response = webTarget.request(
MediaType.MULTIPART_FORM_DATA).post(
Entity.entity(multiPart, multiPart.getMediaType()));
System.out.println(response.getStatus()+" "+response.getStatusInfo()+" "+response);
}
public static void main(String[] args) {
new Slimclient();
}
serwer działa bez żadnych problemów, ale kiedy uruchomić klienta pojawia się następujący błąd:
415 Unsupported Media Type InboundJaxrsResponse{ClientResponse{method=POST, uri=http://localhost:49158/rest/service/upload, status=415, reason=Unsupported Media Type}}
Przeszukałem internet w poszukiwaniu dobrego samouczka na temat gry w koszulki 2 i multipart, ale mogę znaleźć tylko samouczki i przykłady dla koszulki 1 lub z formularzem HTML jako "Klient". Mam nadzieję, że somboda może mi pomóc :)
Próbuję Twojego rozwiązania i otrzymuję wyjątek niezgodności typu argumentu na serwerze. Czy dokonałeś również zmiany na serwerze? – medloh
Znalazłem problem, musieliśmy to zrobić na naszym serwerze: resourceConfig.register (MultiPartFeature.class); – medloh
Dlaczego twoja prośba przyjmuje typ JSON? Czy nie powinien to być Multipart_form? –