http client übertragung

k_g

Mitglied
Hallo ich will meine eingelesene Xml schreiben. Diese kann aber nicht erzeugt werden da der http vlient den ich benutze am anfang seine daten mitüberträgt und diese gehören nicht in die xml. Folgendes wird mitübertragen weshalb meine xml nicht erzeugt wird:
HTML:
HTTP/1.1 200 OKDate: Mon, 20 Jun 2011 14:55:35 GMTServer: Apache/2.2.16 (Unix) mod_ssl/2.2.16 OpenSSL/0.9.8a mod_jk/1.2.30Vary: Accept-EncodingConnection: closeContent-Type: text/xml;charset=utf-8

mein java code
Java:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.FileWriter;
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(String start, String ende)    {
        Connector.startDatum = start;
        Connector.endDatum = ende;
        
        try {
            bauen();
        } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    
    /**
     * @param args
     * @throws IOException 
     * @throws UnknownHostException 
     */
    public void bauen() throws UnknownHostException, IOException {
        
        
        
        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-17T10:00:00.00
                    "</ende>    </getMessungenAktuell>  </soap:Body></soap:Envelope>";
        System.out.println(data);
            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;
            
            
            //BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("datei.xml")));
            BufferedWriter bw = new BufferedWriter(new FileWriter("response.xml"));
           
          
            
            while ((line = rd.readLine()) != null) {
            	
            	bw.write(line);
              //System.out.println(line);
            }
            //System.out.println("While");
            bw.close();
            wr.close();
            rd.close();
            socket.close();
            
            
            
          }
 
    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;
    }
 
 
}
 
S

SlaterB

Gast
wie stellst du denn fest dass das gesendet wird?
der Java-Code enthält ja nichts derartiges, irgendein vorgeschalteter Proxy bei dir?

was ist mit anderen Programmen wie ein Browser, oder kannst du entsprechende Tools aus dem Internet ausprobieren,
passiert da auch derartiges?

ich selber kann dazu leider gar nichts konkretes sagen, vielleicht eher was für ein 'Apache/2.2.16 (Unix)'-Forum als Java?
 

k_g

Mitglied
doch es wird alles übertragen. die xml wird auch versucht neu zu schreiben. aber das funktioniert nicht wegen diese teil der am anfang mit als antwort des servers zurückkommt.
 
S

SlaterB

Gast
ach in der Antwort, na das geht ja noch, du hast doch einen BufferedReader, du liest die Daten alle ein,
da kannst du doch am Anfang das abschneiden, was nicht dahingehört?
z.B. in der ersten Zeile nach charset=utf-8 suchen und bis zu diesem Index alles entfernen
 

k_g

Mitglied
ja genau das hab ich mir auch gedacht entweder abschneiden oder halt nach dem ersten <xml suchen und erst ab da anfangen zu schreiben.
aber ich weis nicht die befehle dazu. hab nix im internet gefunden weil ich nicht wusste wie ich das bei einer suchmaschine als suchbegriff eingebe.
 

k_g

Mitglied
ok hat jetzt so geklappt
Java:
	int xmlData = 0;
            while ((line = rd.readLine()) != null) {
            	
            	if(line.startsWith("<?xml"))
            		xmlData = 1;
            	
            	if(xmlData == 1) {
            		bw.write(line);
            		System.out.println(line);
            	}
            }

danke sehr
 

Ähnliche Java Themen

Neue Themen


Oben