- Forum-Beiträge: 22
19.03.2014, 07:24:59 via Website
19.03.2014 07:24:59 via Website
bin gerade dabei mir einen Webservice zum Upload von Daten einzurichten. Client-Server Kommunikation funktioniert schon.
Ich habe bis jetzt folgenden Code:
Webservice:
2 @Path("/upload/")
3 @Consumes(MediaType.MULTIPART_FORM_DATA)
4 public Response uploadFile(@FormDataParam("file") final InputStream uploadedInputStream,
5 @FormDataParam("filename") final String name)
6 {
7
8 String uploadedFileLocation = "d://uploaded/" + name;
9
10 // save it
11 writeToFile(uploadedInputStream, uploadedFileLocation);
12
13 String output = "File uploaded to : " + uploadedFileLocation;
14
15 return Response.status(200).entity(output).build();
16
17 }
Und Handyseite:
2 private void postFile(final String uploadFilePath)
3 {
4 try
5 {
6 // the file to be posted
7 // String uploadFilePath = Environment.getExternalStorageDirectory() + "/sample.txt";
8 Log.v(TAG, "textFile: " + uploadFilePath);
9
10 // the URL where the file will be posted
11 String postReceiverUrl = "<URLzuWebservice/restful/upload>";
12 Log.v(TAG, "postURL: " + postReceiverUrl);
13
14 // new HttpClient
15 HttpClient httpClient = new DefaultHttpClient();
16
17 // post header
18
19 File file = new File(uploadFilePath);
20 FileBody fileBody = new FileBody(file, file.getName(), "text/plain", "UTF-8");
21
22 HttpPost httpPost = new HttpPost(postReceiverUrl);
23
24 MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
25 reqEntity.addPart("filename", new StringBody(file.getName()));
26 reqEntity.addPart("file", fileBody);
27 System.out.println(reqEntity.toString());
28 // System.out.println(file.get);
29
30 httpPost.setEntity(reqEntity);
31
32 // execute HTTP post request
33 HttpResponse response = httpClient.execute(httpPost);
34
35 HttpEntity resEntity = response.getEntity();
36
37 httpClient.getConnectionManager().shutdown();
38
39 if(resEntity != null)
40 {
41
42 String responseStr = EntityUtils.toString(resEntity).trim();
43 Log.v(TAG, "Response: " + responseStr);
44
45 // you can add an if statement here and do other actions based on the response
46 }
47
48 }
49 catch(NullPointerException e)
50 {
51 e.printStackTrace();
52 }
53 catch(Exception e)
54 {
55 e.printStackTrace();
56 }
57 }
Dies funktioniert auch wunderbar. Jedoch an der Stelle reqEntity.addPart wird immer nur der erste Befehl abgesetzt, sobald ich mehr Infos hinzufügen möchte, wird immer nur das Erste übertragen. Was mache ich falsch?
Und noch eine Frage, ich habe praktisch mehrere Daten, wie Vorname, Nachname.... zu übergeben, um diese in eine DB zu speichern. Zusätzlich kann man mehrere Bilder mit übergeben. Soll das alles mit einem Aufruf wie in diesem Beispiel geschehen? Ist das die richtige Vorgehensweise?
Danke schon mal für die Antworten
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.