Hallo mein programm ist fast am ende, jedoch funktioniert irgendeine sache nicht. ich hoffe jemand findet einen fehler. und zwar : main methode zum senden der anfrage + auslesen der datei werden nie aufgerufen. und wenn main zu constructor > fehler durch exeptions.
hier sind meine 3 klassen:
klasse 1 connector
klasse 2 programm
klasse 3 xml
Danke
hier sind meine 3 klassen:
klasse 1 connector
Java:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import javax.swing.JOptionPane;
public class Connector {
private static String startDatum;
private static String endDatum;
static String data;
//public Connector() {
//}
/**
* @param args
* @throws IOException
* @throws UnknownHostException
*/
public static void main(String[] args) throws UnknownHostException, IOException {
startDatum = JOptionPane.showInputDialog(null,"Bitte StartDatum eingeben","Datumseingabe",JOptionPane.PLAIN_MESSAGE);
endDatum = JOptionPane.showInputDialog(null,"Bitte EndDatum eingeben","Datumseingabe",JOptionPane.PLAIN_MESSAGE);
System.out.println("XML");
data = "<?xml version=\"1.0\" encoding=\"utf-8\"?><soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"> <soap:Body> <getMessungenAktuell xmlns=\"http://pegelonline.wsv.de/webservices/version2_3/2007/10/31\"> <parameterName>WASSERSTAND ROHDATEN</parameterName> <messstellenNummern></messstellenNummern> <messstellenNamen>FRANKFURT OSTHAFEN</messstellenNamen> <start>" +
"" +
startDatum +
"</start> <ende>" +
endDatum + //format: 2011-06-16T14:00:00
"</ende> </getMessungenAktuell> </soap:Body></soap:Envelope>";
String hostname = "www.pegelonline.wsv.de";
int port = 80;
InetAddress addr = InetAddress.getByName(hostname);
System.out.println(addr.toString());
Socket socket = new Socket(addr, port);
String path = "/webservices/version2_3/2007/10/31/PegelonlineWebservice";
BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), "UTF8"));
System.out.println("Writer");
wr.write("POST " + path + " HTTP/1.0\r\n");
wr.write("Content-Length: " + data.length() + "\r\n");
wr.write("Content-Type: text/plain; charset=UTF-8\r\n");
wr.write("SOAPAction: getMessungenAktuell\r\n");
wr.write("\r\n");
wr.write(data);
wr.flush();
System.out.println("Write");
BufferedReader rd = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line;
while ((line = rd.readLine()) != null) {
System.out.println(line);
}
System.out.println("While");
wr.close();
rd.close();
socket.close();
//System.out.println("TEST: " + datum);
}
public static String getStartDatum() {
return startDatum;
}
public void setStartDatum(String startDatum) {
this.startDatum = startDatum;
}
public static String getEndDatum() {
return endDatum;
}
public void setEndDatum(String endDatum) {
this.endDatum = endDatum;
}
}
klasse 2 programm
Java:
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
/**
* @author Konstantin
*
*/
public class Programm extends JFrame implements ActionListener {
private final int BREITE = 350;
private final int HOEHE = 250;
private final int X0 = 200;
private final int Y0 = 200;
private JButton berechnenB = new JButton("Berechnen");
private JButton endeB = new JButton("Beenden");
private JPanel flaecheP = new JPanel();
private JLabel eingabeMusterL = new JLabel("Eingabemuster:");
private JLabel eingabeMusterT = new JLabel("Beispiel (2011-06-16T14:00:00) ");
private JLabel pegelL = new JLabel("Pegel:");
private JLabel pegelT = new JLabel("Frankfurt Osthafen");
private JLabel startL = new JLabel("Start Zeit: ");
private JTextField startT = new JTextField("");
private JLabel endeL = new JLabel("Ende Zeit: ");
private JTextField endeT = new JTextField("");
private JLabel leer1 = new JLabel("----------------------"); //abstandhalter
private JLabel leer2 = new JLabel("----------------------"); //abstandhalter
private JLabel standL = new JLabel("Stand (in m²):");
private JLabel standT = new JLabel("00000000000");
Connector connector = new Connector();
XML xml = new XML();
public Programm() {
super("Wasserstand");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(BREITE, HOEHE);
setLocation(X0, Y0);
setMaximumSizes();
implementActionlistener();
flaecheAnordnen();
setResizable(true);
setVisible(true);
}
//main Methode
public static void main(String[] args) {
new Programm();
}
private void setMaximumSizes() {
pegelT.setMaximumSize(new Dimension(200,20));
startT.setMaximumSize(new Dimension(200,20));
endeT.setMaximumSize(new Dimension(200,20));
}
private void flaecheAnordnen() {
add(flaecheP);
// Anordnung vereinbaren
GroupLayout dgLayout = new GroupLayout(flaecheP);
flaecheP.setLayout(dgLayout);
// voreingestellte Lücken verwenden
dgLayout.setAutoCreateGaps(true);
dgLayout.setAutoCreateContainerGaps(true);
// senkrechte Gruppierung vereinbaren
dgLayout.setVerticalGroup(dgLayout.createSequentialGroup().
addGroup(dgLayout.createParallelGroup().
addComponent(eingabeMusterL).addComponent(eingabeMusterT)).
addGroup(dgLayout.createParallelGroup().
addComponent(pegelL).addComponent(pegelT)).
addGroup(dgLayout.createParallelGroup().
addComponent(startL).addComponent(startT)).
addGroup(dgLayout.createParallelGroup().
addComponent(endeL).addComponent(endeT)).
addGroup(dgLayout.createParallelGroup().
addComponent(standL).addComponent(standT)).
addGroup(dgLayout.createParallelGroup().
addComponent(leer1).addComponent(leer2)).
addGroup(dgLayout.createParallelGroup().
addComponent(berechnenB).addComponent(endeB))
);
// waagerechte Gruppierung vereinbaren
dgLayout.setHorizontalGroup(dgLayout.createSequentialGroup().
addGroup(dgLayout.createParallelGroup().
addComponent(eingabeMusterL).addComponent(pegelL).addComponent(startL).addComponent(endeL).
addComponent(standL).addComponent(leer1).addComponent(berechnenB)).
addGroup(dgLayout.createParallelGroup().
addComponent(eingabeMusterT).addComponent(pegelT).addComponent(startT).addComponent(endeT).
addComponent(standT).addComponent(leer2).addComponent(endeB))
);
}
private void implementActionlistener() {
berechnenB.addActionListener(this);
endeB.addActionListener(this);
}
@Override
public void actionPerformed(ActionEvent event) {
if(event.getSource() == berechnenB) {
String start = startT.getText().toString();
String ende = endeT.getText().toString();
Connector connector = new Connector();
connector.setStartDatum(startT.getText().toString());
connector.setEndDatum(endeT.getText().toString());
//main methode zum senden der anfrage + auslesen der datei werden nie aufgerufen
//wenn main zu constructor > fehler durch exeptions
String stand = xml.getlastMesswert();
standT.setText(stand);
XML xml = new XML();
System.out.println("Start: " + Connector.getStartDatum());
System.out.println("Ende: " + Connector.getEndDatum());
System.out.println("Stand: " + stand);
}
else if(event.getSource() == endeB) {
dispose();
System.exit(0);
}
}
}
klasse 3 xml
Java:
/**
*
*/
/**
* @author Konstantin
*
*/
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.Namespace;
import org.jdom.input.SAXBuilder;
public class XML {
private static String lastWert = "error";
public XML () {
}
public static void main (String[]args) throws JDOMException, IOException
{
String filename = "response.xml";
Document doc = new SAXBuilder().build(filename);
Element envolpe = doc.getRootElement();
Element body = envolpe.getChild("Body", envolpe.getNamespace());
Namespace ns = Namespace.getNamespace("ns","http://pegelonline.wsv.de/webservices/version2_3/2007/10/31");
List<Element> anfrage = body.getChildren("getMessungenAktuellResponse",ns);
for (Element element : anfrage) {
List<Element> antworten = element.getChildren("getMessungenAktuellReturn", ns);
for (Element e : antworten) {
String messwert = e.getChildText("messwert", ns);
System.out.println(messwert.trim());
String zeitpunkt = e.getChildText("zeitpunkt", ns);
System.out.println(zeitpunkt.trim());
lastWert = messwert;
}
}
System.out.println("----: " + lastWert);
}
public String getlastMesswert() {
return lastWert;
}
public void setlastMesswert(String lastWert) {
this.lastWert = lastWert;
}
}
Danke