2 Stimmen

Bild (jpg) über HttpPost von Android an Servlet (WebServer) senden

Ich habe ein Bild auf meiner SD-Karte (vom Typ jpg) und ich versuche, das Bild per HttpPost an mein Servlet zu senden, das auf Apache Tomcat 7.0 läuft

Bisher habe ich gegoogelt, wie man das macht, aber ich kann nicht den perfekten Weg finden.

Hat jemand von Ihnen vielleicht einen Vorschlag oder eine Lösung für dieses Problem?

Ich danke Ihnen im Voraus, Sammy Stevan Djap

1voto

frayser Punkte 1694

HttpClient ist die zu verwendende Klasse und es gibt eine Lehrgang für sie. Siehe den Abschnitt HTTP-Client verwenden gleich nach den Bildern.

UPDATE
Es folgt ein Kommentar zu dem Beispiel aus dem Tutorial Entwicklerleben.de . Ein guter Aspekt dieses Beispiels ist, dass es zeigt, wie man verschiedene Datentypen durch Kodierung eines Typs in einen anderen senden kann. Man kann jeden der in dieser Kette von Datenumwandlungen verwendeten Typen senden, indem man an dem Punkt in der Kette beginnt, der dem Typ der zu sendenden Daten entspricht:

Streicher werden in eine Hashtabelle die in eine Datei geschrieben wird ObjectOutputStream die durch eine ByteArrayOutputStream das in ein ByteArray umgewandelt wird, das wiederum zur Übertragung in ein ByteArrayEntity umgewandelt wird.

Um nur eine ByteArray werden alle Schritte übersprungen, die erfolgen, bevor die Daten zu einem ByteArray . Springen Sie in Zeile 26 ein, wo ein ByteArray wird erstellt mit toByteArray().

Für den Versand anderer Typen gehen Sie wie folgt vor (siehe Beispiel):
Zeile 26: ByteArray verwenden Sie es einfach, um eine ByteArrayEntity
Zeile 26: ByteArrayOutputStream konvertieren Sie es in eine ByteArray
Zeile 24: ObjectOutputStreams : erstellen sie auf ByteArrayOutputStreams
Zeile 25: Objekte : Schreiben Sie Streicher , Hashtabellen usw. zu einer ObjectOutputStream .

 1 /** this method is called in a non-"edt" thread */
 2 private void _doInBackgroundPost() {
 3   Log.i(getClass().getSimpleName(), "background task - start");
 4 
 5 
 6   Hashtable<String, String> map = new Hashtable();
 7   map.put("uid", uid);
 8   map.put("pwd", pwd);
 9 
10   try {
11     HttpParams params = new BasicHttpParams();
12 
13     // set params for connection...
14     HttpConnectionParams.setStaleCheckingEnabled(params, false);
15     HttpConnectionParams.setConnectionTimeout(params, NetworkConnectionTimeout_ms);
16     HttpConnectionParams.setSoTimeout(params, NetworkConnectionTimeout_ms);
17     DefaultHttpClient httpClient = new DefaultHttpClient(params);
18 
19     // create post method
20     HttpPost postMethod = new HttpPost(LoginServiceUri);
21 
22     // create request entity
23     ByteArrayOutputStream baos = new ByteArrayOutputStream();
24     ObjectOutputStream oos = new ObjectOutputStream(baos);
25     oos.writeObject(map);
26     ByteArrayEntity req_entity = new ByteArrayEntity(baos.toByteArray());
27     req_entity.setContentType(MIMETypeConstantsIF.BINARY_TYPE);
28

0voto

Fahar Punkte 149

Ich habe dies in ein wenig sauberer Weg, aber mit asp.net "Web-Formular" getan. Ich bin sicher, dass jemand leicht ein Makeover von diesem in Servlet tun kann. Sie können meine Lösung finden aquí .

Prost

Fahar

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X