ich habe ein Problem: ich bin gerade in meiner Ausbildung, und habe die Aufgabe bekommen, eine klee Java Applikation zu basteln. das problem ist, das wir Java erst nächstes Jahr in der Schule lernen...
Sie Aufgabe: Ein kleines Programm, das ein "Öffnen" Fenster hat, um Dateien auswählen zu können –> dann sollen XML Dateien beim klicken auf öffnen an eine URL gesendet werden, mit Hilfe von HTTP Post.
So hört sich ja relativ einfach an^^. kann mir da jemand helfen?
private static final String uploadServlet = "/mywebapp/upload";
private HttpConnection connection = null;
public MyHttpClient() {
this(System.getProperty("http.host"), Integer.parseInt(System
.getProperty("http.port")));
}
public MyHttpClient(String host, int port) {
SimpleHttpConnectionManager connectionManager = new SimpleHttpConnectionManager(
false);
HostConfiguration hostConfiguration = new HostConfiguration();
hostConfiguration.setHost(host, port);
connection = connectionManager.getConnection(hostConfiguration);
}
public int fileUpload(File f) throws IOException {
if (!connection.isOpen())
connection.open();
PostMethod filePost = new PostMethod(uploadServlet);
Part[] parts = { new StringPart("fileupload_request", f.getName()),
new FilePart(f.getName(), f) };
filePost.setRequestEntity(new MultipartRequestEntity(parts, filePost
.getParams()));
return filePost.execute(new HttpState(), connection);
}
Ich hab das ganze mit einem eigenen Servlet gemacht, welches mir das File entgegen nimmt. Wenn das ganze über eine URL geht gibts sicher ein bisschen was zu ändern, aber es könnte dir trotzdem helfen
Ich habe eine ähnliches Problem wie hier beschrieben. Ich möchte zwischen zwei HttpServlets XML-Daten per Http Post hin und her schicken. Es ist mein erstes Projket mit XML. Mit Servlets habe ich ein wenig Erfahrung, aber einen Datenaustausch habe ich noch nicht realisiert.
Was ich habe ist folgendes. Ich hole mir Daten aus einem HTML-Formular und schicke diese an ein Servlet um sie dort in eine XML Struktur zu bringen. Der Code der Klasse für die XML Erstellung sieht so aus:
Code:
import java.io.FileWriter;
import java.io.IOException;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import data.Bestelldaten;
public class MyXMLWriter {
public Document createXMLDocument(Bestelldaten daten) {
Document document = DocumentHelper.createDocument();
Element root = document.addElement("controlCard");
Element element = root.addElement("State")
.addText(daten.getStaat());
element = root.addElement("Name")
.addText(daten.getBehoerde());
element = root.addElement("Address")
.addText(daten.getAdresse());
element = root.addElement("BodyName")
.addText(daten.getKontroll());
element = root.addElement("BodyAddress")
.addText(daten.getAnschrift());
element = root.addElement("PreferredLanguage")
.addText(daten.getSprache());
return document;
}
public boolean writeXMLFile(Document doc) {
try {
// lets write to a file
XMLWriter writer = new XMLWriter(
new FileWriter( "output.xml" )
);
writer.write( doc );
writer.close();
// Pretty print the document to System.out
OutputFormat format = OutputFormat.createPrettyPrint();
writer = new XMLWriter( System.out, format );
writer.write( doc );
// Compact format to System.out
format = OutputFormat.createCompactFormat();
writer = new XMLWriter( System.out, format );
writer.write( doc );
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return true;
}
}
Die Erzeugung funktioniert prima und auch das Schreiben auf meine HDD funktioniert. Was ich jedoch möchte ist, die XML Datei an ein Servlet per HTTP Post schicken. Und zwar möchte ich diese dazu vorher nicht auf HDD Speichern.
Wie macht man das denn so generell? Schickt man das "Document" Objekt rüber? Wandelt man das ganze in ein String um? Mir fehlt an dieser Stelle wohl ziemlich das Basis Wissen.
Ich habe die Jakarte Libs ausprobiert und ein FileUpload hinbekommen, wo ich eine Datei von der HDD einlese und dann an ein Servlet schicke, aber so möchte ich es ja nicht machen.
Es wäre super, wenn mir jemand an dieser Stelle ein paar Hinweise geben kann.
Die schönste Lösung wäre ein WebService, welches als Parameter das XML-Element bekommt. Das angenehme ist dass du dir einfach ein Interface definierst, welches die Schnittstelle für das WebService darstellt. Das Interface hat eine Methode welches ein Objekt übergeben bekommt. Dieses Objekt kann beliebige Daten enthalten. Aus diesem Interface kannst du dir dann die wsdl Datei generieren lassen. Diese beschreibt dein Service. Du brauchst dann nur noch das Service installieren und schon kannst du dir einen Client basteln der das ganze aufruft.
Ich hab meine WebServices bis jetzt immer mit axis/axis2 implementiert.