JAVA HTTP Request GET und POST

JAVA HTTP Request GET und POST

Beitragvon Timmii » Di 10. Aug 2010, 08:46

Ein GET REQUEST

Code: Alles auswählen

    /**
     * Führt einen HTTP GET Request aus und holt die Daten als String vom Server ab.
     *
     * @param url
     *            die URL
     * @return HttpData als String
     */
    String getHTTPDataGET(URL url) {
        if (LOGGER.isDebugEnabled()) {
            LOGGER.debug("Fetching from " + url);
        }
        try {
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setReadTimeout(this.timeout);
            conn.setConnectTimeout(this.timeout);

            conn.setRequestMethod("GET");
            conn.setUseCaches(false);

            StringBuffer sb = new StringBuffer();
            BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String inputLine;

            while ((inputLine = in.readLine()) != null) {
                sb.append(inputLine);
                sb.append("\n");
            }
            in.close();

            return sb.toString();
        } catch (Exception e) {
            LOGGER.warn("Caught " + e.getMessage() + " while fetching " + url);
            return null;
        }
    }



Ein POST REQUEST

Code: Alles auswählen

/**
     * Führt einen HTTP POST Request aus und holt die Daten als String vom Server ab.
     *
     * @param url
     *            die URL
     * @param urlParameters
     *            die URL Parameter
     * @return HttpData als String
     */
    String getHTTPDataPOST(String targetURL, String urlParameters)
    {
      URL url;
      HttpURLConnection connection = null; 
      try {
        //Create connection
        url = new URL(targetURL);
        connection = (HttpURLConnection)url.openConnection();
        connection.setRequestMethod("POST");
        connection.setRequestProperty("Content-Type",
             "application/x-www-form-urlencoded");
             
        connection.setRequestProperty("Content-Length", "" +
                 Integer.toString(urlParameters.getBytes().length));
        connection.setRequestProperty("Content-Language", "de-DE"); 
             
        connection.setUseCaches (false);
        connection.setDoInput(true);
        connection.setDoOutput(true);

        //Send request
        DataOutputStream wr = new DataOutputStream (
                    connection.getOutputStream ());
        wr.writeBytes(urlParameters);
        wr.flush ();
        wr.close ();

        //Get Response
        StringBuffer sb = new StringBuffer();
        BufferedReader rd = new BufferedReader(new InputStreamReader(connection.getInputStream()));
        String inputLine;

        while((inputLine = rd.readLine()) != null) {
            sb.append(inputLine);
            sb.append('\r');
        }
       
        rd.close();
        return sb.toString();

      } catch (Exception e) {

        e.printStackTrace();
        return null;

      } finally {

        if(connection != null) {
          connection.disconnect();
        }
       
      }
    }



Der Unterschied ist das bei POST die Parameter gesondert übergeben werden.
Dies ist besonders bei langen Parameterwerten bzw einer großen Parameterdatenmenge zu empfehlen.

die URLParameter müssen wie folgt als URL encodeter String übergeben werden:
Code: Alles auswählen
Bsp:
String urlParameters = "p1Name=" + URLEncoder.encode("wert1", "UTF-8") + "&p2Name=" + URLEncoder.encode("wert2", "UTF-8")
Benutzeravatar
Timmii
Forumcheffe
 
Beiträge: 10
Registriert: Fr 15. Jan 2010, 10:01
Wohnort: Berlin

Zurück zu Freeware

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste

cron