com.Sonne.jersey.api.client.UniformInterfaceException (Rückgabe einer Antwort den status 400)
Ich versuche zum einrichten der Datei-upload Beispiel mit JAX-RS. Könnte ich die Projekt-und erfolgreich laden Sie die Datei in einem server-Standort. Aber ich bekomme die folgende Fehlermeldung, wenn die Datei Größe ist mehr als 10KB (komisch!!)
com.sun.jersey.api.client.UniformInterfaceException: POST http://localhost:9090/DOAFileUploader/rest/file/upload returned a response status of 400
at com.sun.jersey.api.client.WebResource.handle(WebResource.java:607)
at com.sun.jersey.api.client.WebResource.access$200(WebResource.java:74)
at com.sun.jersey.api.client.WebResource$Builder.post(WebResource.java:507)
at com.sony.doa.rest.client.DOAClient.upload(DOAClient.java:75)
at com.sony.doa.rest.client.DOAMain.main(DOAMain.java:34)
Ich bin neu in JAX-RS und ich bin mir nicht sicher, was genau das Problem ist. Muss ich das setzen von einigen Parametern der client-Seite oder server-Seite (wie Größe, timeout etc)?
Dies ist das client-side code aufrufen von webservice:
public void upload() {
File file = new File(inputFilePath);
FormDataMultiPart part = new FormDataMultiPart();
part.bodyPart(new FileDataBodyPart("file", file, MediaType.APPLICATION_OCTET_STREAM_TYPE));
WebResource resource = Client.create().resource(url);
String response = resource.type(MediaType.MULTIPART_FORM_DATA_TYPE).post(String.class, part);
System.out.println(response);
}
Dies ist die server-side-code:
@Path("/file")
public class UploadFileService {
@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFile(
@FormDataParam("file") InputStream uploadedInputStream,
@FormDataParam("file") FormDataContentDisposition fileDetail) {
String uploadedFileLocation = "e://uploaded/"
+ fileDetail.getFileName();
writeToFile(uploadedInputStream, uploadedFileLocation);
String output = "File uploaded to : " + uploadedFileLocation;
return Response.status(200).entity(output).build();
}
private void writeToFile(InputStream uploadedInputStream,
String uploadedFileLocation) {
try {
OutputStream out = new FileOutputStream(new File(
uploadedFileLocation));
int read = 0;
byte[] bytes = new byte[16000];
out = new FileOutputStream(new File(uploadedFileLocation));
while ((read = uploadedInputStream.read(bytes)) != -1) {
out.write(bytes, 0, read);
}
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
} } }
Bitte lassen Sie mich wissen, welche Einstellungen muss ich ändern für Datei-Größen, die größer als 10KB?
Dank!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Benutze ich org.apache.Unterhaus.fileupload.- servlet.ServletFileUpload in Jersey-Kontext, und es funktioniert gut., und ja, Sie legen Sie die maximale Größe der Datei, sorry ich habe diesen vor.
hier ist ein snipet der code, den ich verwenden (dies ist eine mehrteilige form, so gibt es andere Felder, die zusammen mit der Datei)
Ich hatte das gleiche problem mit Jersey. Ich habe aktiviert jersey trace, aber nichts hilft mir.
Habe ich geändert, die Bibliothek von einem apache Bibliothek und das sehe ich als das problem mit der Verbindung mit einem repository für temporäre Dateien für tomcat. Das repository war nicht vorhanden. Für Dateien, die unter 10k, wird das repository nicht genutzt wurde.
So, nach dem repository-Erstellung, die ich verwendet, jersey library und alle funktioniert.