Announcement

Collapse
No announcement yet.

Daten per POST übernehmen?

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

  • Daten per POST übernehmen?

    Hallo,

    wahrscheinlich ist die Frage doof, aber ich bekomme es mal wieder einfach nicht hin ...

    Ich hab ein Servlet und will nun eine Datei per POST dorthin schicken. Mir gelingt es nicht, die Daten entgegenzunehmen.

    Ich benutze "wget" auf der Kommandozeile in der Art:

    wget --post-file=in.dat http://meinserver/pfad/zum/servlet -O out.dat

    Das sollte die Datei in.dat zum Servlet übertragen. Dort versuche ich dann auf den Inhalt zuzugreifen und ihn in temp zu speichern:


    Code:
             BufferedReader in =  new BufferedReader(new InputStreamReader(request.getInputStream()));
    
    
                    String temp = "";
                    String line = null;
                    
                    while ( (line = in.readLine()) != null  ){
    
                        temp = temp + line;
                        //out.println(paras.nextElement().toString() + "\n");
                    }
                   
                    out.println(temp);
    Aber leider funktioniert das nicht, temp ist immer noch leer nach der Operation ...

    Danke für jede Hilfe :-)

  • #2
    Nun, du hast im Servlet doGet und doPost ........wo steht der obige Code drin?
    Des Weiteren ist -O out.dat kein gültiger Parameter für eine URL

    Aufbau
    ...url?parameter=value
    Christian

    Comment


    • #3
      Originally posted by Christian Marquardt View Post
      Nun, du hast im Servlet doGet und doPost ........wo steht der obige Code drin?
      Des Weiteren ist -O out.dat kein gültiger Parameter für eine URL

      Aufbau
      ...url?parameter=value
      Das "-O out.dat" gehört auch nicht zur URL sondern sagt dem wget dass er die entgegengenommenen Daten in eine Datei speichern und nicht auf der Kommandozeile ausgeben soll ...


      Der Code steht in der Methode

      protected void processRequest(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException

      die dann wiederum sowohl von doPost als auch doGet aufgerufen wird ...

      Mit GET-Variablen etc. funktioniert auch alles - mein Problem liegt eher darin, dass ich per POST eine ganze Datei schicke und jetzt nicht weiss, wie ich die abgreifen kann ...??

      Comment


      • #4
        Achso, dann könnte

        http://www.torsten-horn.de/techdocs/jsp-upload.htm

        helfen
        Christian

        Comment


        • #5
          Originally posted by Christian Marquardt View Post
          Danke für Deine Hilfe, aber das ist es auch nicht .... :-)

          Mein Problem liegt wohl darin, dass irgendwas mit den Stream-Objekten nicht stimmt ... ich kann ja nicht wie bei Formulardaten üblich, einfach per Parametername auf die Daten zugreifen, da ich nur eine Datei poste. Also muss ich auf Streams zugreifen und irgendwie den Stream des Request-Objekts auslesen ....

          Comment


          • #6
            Wenn ich mir mit

            request.getContentLength()

            die Länge des übergebenen Contents ausgeben lasse, dann bekomme ich exakt dieselbe Bytezahl die die übergebene Datei hat - die Übergabe scheint also zu funktionieren, nur irgendwie schaffe ich es nicht, dann auch auf den Content zuzugreifen ....

            Comment


            • #7
              hmmmm, du hast dir
              - mal das Beispiel mit dem Servlet angesehen

              nunja, denke das sollte passen. Du hast mulitpart genutzt?
              Christian

              Comment


              • #8
                So, ich habs hinbekommen. Hat nichts mit Multipart & Co. zu tun gehabt, sondern mit der Art und Weise, wie ich auf die Daten zugreifen wollte: Als Stream - gings nicht. Mit Parametername - ging auch nicht.

                Also hab ich einfach mal über alle Parameter iteriert, und siehe da, jetzt klappt es!

                Christian, nochmal vielen Dank für Deine Hilfe!!!

                Code:
                                Enumeration paramNames = request.getParameterNames();
                                while (paramNames.hasMoreElements()) {
                                    String paramName = (String) paramNames.nextElement();
                                    out.print("Name: " + paramName);
                                    String[] paramValues = request.getParameterValues(paramName);
                                    if (paramValues.length == 1) {
                                        String paramValue = paramValues[0];
                                        if (paramValue.length() == 0) {
                                            out.print(" - No Value\n");
                                        } else {
                                            out.print(" Value: " + paramValue);
                                        }
                                    } else {
                                        out.print(" Value: ");
                                        for (int i = 0; i < paramValues.length; i++) {
                                            out.print(paramValues[i] + " - ");
                                        }
                                        out.println("\n");
                                    }
                                }

                Comment

                Working...
                X