Announcement

Collapse
No announcement yet.

Objekt an ein Servlet senden mit commons.HttpClient

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Objekt an ein Servlet senden mit commons.HttpClient

    Hallo,

    ich möchte Objekte an ein Servlet senden, mit commons.HttpClient von Apache (da ich dessen Proxy-Funktionalität
    benötige).

    Das senden vom Servlet an den Client funktioniert wunderbar.
    Und zwar so:
    ObjectOutputStream oos =
    new ObjectOutputStream(response.getOutputStream());
    oos.writeObject( myResponse );
    oos.flush();

    Jedoch wie sende ich Objekte?

    Momentan benutze ich
    GetMethod httpget = new GetMethod(theUrl);
    proxyclient.executeMethod(httpget);

    Damit kann ich nur Strings (nämlich theUrl) senden.
    Weiß jemand wie das mit Objekten und HttpClient funktioniert
    und wie das Servlet zu programmiern ist?
    Thx und Gruß.

  • #2
    Hallo Mark,
    wenn Du http als Übertragungsweg benutzt, überträgst Du immer nur Strings. Http hat keine Ahnung, was Javaobjekte sind. Wenn du es ungedingt machen willst, wäre meine Idee, den ObjectStream als String mittels http-POST zu übertragen und den String auf dem Server wieder in einen InputStream einzulesen. Das Risiko dabei ist allerdings, dass gerade im Zusammenhang mit Proxies irgendwo auf dem Übertragungsweg Zeichen umcodiert werden. Dann kannst Du den String möglicherweise nicht mehr als ein Objekt interpretieren.
    Gruß ngom
    http://www.winfonet.eu

    Comment


    • #3
      Hallo ngomo,
      Danke für den Tip.
      Habe inzwischen die Lösung gefunden:

      Der Client:
      URL origUrl = new URL( theUrl );
      url = new URL( origUrl.getProtocol(), proxyIP,
      proxyPort, theUrl );
      urlConnection = url.openConnection();
      urlConnection.setRequestProperty("Content-Type",
      "application/x-java-serialized-object");
      ObjectOutputStream oos =
      new ObjectOutputStream(urlConnection.
      getOutputStream());
      oos.writeObject(objOut);

      Damit können auch über einen Proxy Objekte gesendet
      werden. Ich brauche also commons.HttpClient gar nicht.

      Das Servlet liest ganz einfach in der doPost()-Methode
      die Objekte:

      ObjectInputStream ois = new ObjectInputStream(request.
      getInputStream());
      Object obj = ois.readObject();

      Cia

      Comment

      Working...
      X