request aus servlet absetzen?

Hallo ng,

ich habe eine - wahrscheinlich ziemlich blöde - Frage:

Wie kann ich aus einem Servlet heraus einen Request (zu einem anderen Server - kein Java, sondern Apache mit PHP) absetzen?

Dafür müsste es doch eigentlich ein Standard-Vorgehen in der Servlet API geben, oder? Habe da leider nichts gefunden...

Gruß,
Peter
 
Was meinst du genau mit "einen Request absetzen"?

Falls du du ein HTTP Request an nen andren Webserver senden willst, und dann sein Response auswerten willst, benutze die HttpURLConnection Klasse ;-)

hier ein Beispiel, eine Klasse mit der man Dateien von Webserver downloaden kann:#

Java:
package downloadPackage;

import java.net.*;
import java.io.*;

/**
 * 
 * @author Yanick Dickbauer, HTBLA Leonding
 *
 */
public class FileDownload {
    
    public FileDownload (URL downloadFile, String savePath){
        this.downloadFile = downloadFile;
        this.savePath = savePath;
    }
    
    public void download() throws Exception {
        HttpURLConnection request = (HttpURLConnection)this.downloadFile.openConnection();
        request.connect();
        System.out.println("Verbindung hergestellt");
        //datei öffnen
        OutputStream fileStream = new FileOutputStream(this.savePath);
        InputStream downloadStream = request.getInputStream();
        System.out.println("Begin Download...");
        for (;;)
        {
            byte[] buffer = new byte[BUFFER_SIZE];
            int anzBytes = downloadStream.read(buffer);
            if (anzBytes <= 0)
                break;
            fileStream.write(buffer);
        }
        fileStream.close();
        System.out.println("Download succeeded");
    }
    
    URL downloadFile;
    String savePath;
    
    private final static int BUFFER_SIZE = 256;
}

Diese Klasse kann man ja dann natürlich aus ner Servlet Klasse aufrufen ;-)
Hoffe, ich habe dich richtig verstanden.

Lg, Yanick
 
Hi Yanick,

yan1 hat gesagt.:
Was meinst du genau mit "einen Request absetzen"?

Falls du du ein HTTP Request an nen andren Webserver senden willst, und dann sein Response auswerten willst, benutze die HttpURLConnection Klasse ;-)
...
Hoffe, ich habe dich richtig verstanden.

Nicht ganz. :)
Ich möchte gar nicht auf die Response warten, sondern einfach einen anderen Server über ein eingetretenes Ereignis (File zum Download bereit!) benachrichtigen.

Ich habe es jetzt mal mit der von dir vorgeschlagenen HttpURLConnection-Klasse versucht, aber irgendwie funktioniert es nicht ...

Code:
URL notification_path = new URL("http://www.remote_server.com/notification.php");
HttpURLConnection request = (HttpURLConnection)notification_path.openConnection();        
request.addRequestProperty("filename",filename);  // geht das hier irgendwie anders?
request.disconnect();

Hast du vielleicht eine Idee, was ich falsch mache, oder ist dies doch nicht die richtige Klasse, da ich eigentlich ja nur eine Nachricht senden will und keine Verbindung (z.B. zum Download wie in deinem Beispiel) brauche.

lg,
Peter
 
Sorry dass ich erst jetzt zurückschreibe.

Ich glaube mit einem HttpURLConnection Objekt ist es nicht möglich ein request an einen Server zu schicken ohne die Antwort abzufragen. Mit disconnect wirds gar nicht mal gesendet also wird dein Code wahrscheinlich nich funktionieren.. ;-)

Vll. irre ich mich und es geht doch, aber wieso machst du nicht ein Socket zum Server auf und sendest ihm diesen String und brichst danach deine Verbindung ab.

Code:
//Hier der zu sendende String
/*
  wie ich hier >> request.addRequestProperty("filename",filename); << heraus entnehme
  willst du einen Filename per Header versenden, das geht so:
*/
GET /notification.php HTTP/1.1\r\n
Host : www.remote_server.com\r\n
Filename: beispiel.dat\r\n
\r\n

Lg, Yanick
 

Neue Beiträge

Zurück