# http client übertragung



## k_g (20. Jun 2011)

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:

```
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

```
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;
    }
 
 
}
```


----------



## SlaterB (20. Jun 2011)

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 (20. Jun 2011)

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.


----------



## SlaterB (20. Jun 2011)

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 (20. Jun 2011)

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.


----------



## SlaterB (20. Jun 2011)

'java string suchen'
'java string abschneiden'
usw.


----------



## k_g (20. Jun 2011)

ok hat jetzt so geklappt

```
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


----------

