[AIX HP-UX Linux Solaris Windows]

Beispiel: Die von den Advisor zurückgegebene Daten verwenden

Unabhängig davon, ob Sie einen Standardaufruf für einen vorhandenen Teil des Anwendungsservers verwenden oder einen neuen Codeabschnitt als serverseitiges Gegenstück zu Ihrem angepassten Advisor hinzufügen, möchten Sie eventuell die zurückgegebenen Lastwerte prüfen und das Serververhalten ändern.

Die Java-Klasse "StringTokenizer" und die zugehörigen Methoden vereinfachen diese Überprüfung. Der Inhalt eines typischen HTTP-Befehls könnte wie folgt aussehen:
GET /index.html HTTP/1.0 90
Eine typische Antwort auf diesen Befehl könnte wie folgt aussehen:
HTTP/1.1 200 OK
Date: Mon, 20 November 2000 14:09:57 GMT
Server: Apache/1.3.12 (Linux and UNIX)
Content-Location: index.html.en
Vary: negotiate
TCN: choice
Last-Modified: Fri, 20 Oct 2000 15:58:35 GMT
ETag: "14f3e5-1a8-39f06bab;39f06a02"
Accept-Ranges: bytes
Content-Length: 424
Connection: close
Content-Type: text/html
Content-Language: en

<!DOCTYPE HTML PUBLIC "-//w3c//DTD HTML 3.2 Final//EN">
<HTML><HEAD><TITLE>Test Page</TITLE></HEAD>
<BODY><H1>Apache server</H1>
<HR>
<P><P>This Web server is running Apache 1.3.12.
</P>
<P><IMG SRC="apache_pb.gif" ALT="">
</P></P>
</HR>
</BODY></HTML>
Die Elemente von Interesse sind in der ersten Zeile enthalten. Dies ist insbesondere der HTTP-Rückkehrcode. Die HTTP-Spezifikation klassifiziert Rückkehrcodes, die wie folgt zusammengefasst werden können:

Wenn Sie die Codes, die der Server zurückgeben kann, genau kennen, muss Ihr Code nicht so detailliert wie in diesem Beispiel sein. Berücksichtigen Sie jedoch, dass sich eine Beschränkung der erkannten Rückkehrcodes auf die künftige Flexibilität Ihres Programms auswirken kann.

Das folgende Beispiel ist ein eigenständiges Java-Programm, das einen minimalen HTTP-Client enthält. In dem Beispiel wird ein einfacher, vielseitig einsetzbarer Parser für die Überprüfung der HTTP-Antwort aufgerufen.
import java.io.*;
import java.util.*;
import java.net.*;

public class ParseTest {
     static final int iPort = 80;
     static final String sServer = "www.ibm.com";
     static final String sQuery = "GET /index.html HTTP/1.0\r\n\r\n";
     static final String sHTTP10 = "HTTP/1.0";
     static final String sHTTP11 = "HTTP/1.1";

     public static void main(String[] Arg) {
         String sHTTPVersion = null;
         String sHTTPReturnCode = null;
     String sResponse = null; int iRc = 0;
         BufferedReader brIn = null;
         PrintWriter psOut = null;
         Socket soServer= null;
     StringBuffer sbText = new
     StringBuffer(40);

         try {
           soServer = new Socket(sServer, iPort);
           brIn = new BufferedReader(new InputStreamReader(
                                                                       soServer.getInputStream()));
           psOut = new PrintWriter(soServer.getOutputStream());
           psOut.println(sQuery);
           psOut.flush();
           sResponse = brIn.readLine();
           try {
               soServer.close();
           } catch (Exception sc) {;}
       }  catch (Exception swr) {;}

       StringTokenizer st = new StringTokenizer(sResponse, " ");
       if (true == st.hasMoreTokens()) {
           sHTTPVersion = st.nextToken();
           if (sHTTPVersion.equals(sHTTP110) || sHTTPVersion.equals(sHTTP11)) {
               System.out.println("HTTP Version: " + sHTTPVersion);
           } else {
               System.out.println("Invalid HTTP Version: " + sHTTPVersion);
     } 
         } else {
           System.out.println("Nothing was returned");
         return;
   } 

       if (true == st.hasMoreTokens()) {
           sHTTPReturnCode = st.nextToken();
           try {
               iRc = Integer.parseInt(sHTTPReturnCode);
           } catch (NumberFormatException ne) {;}

           switch (iRc) {
           case(200): 
               System.out.println("HTTP Response code: OK, " + iRc);
               break; 
           case(400): case(401): case(402): case(403): case(404): 
               System.out.println("HTTP Response code: Client Error, " + iRc);
               break; 
           case(500): case(501): case(502): case(503):
               System.out.println("HTTP Response code: Server Error, " + iRc);
               break; 
           default: 
               System.out.println("HTTP Response code: Unknown, " + iRc);
               break; 
     } 
   }

       if (true == st.hasMoreTokens()) {
           while (true == st.hasMoreTokens()) {
               sbText.append(st.nextToken());
               sbText.append("  ");
       } 
           System.out.println("HTTP Response phrase: " + sbText.toString());
   } 
  } 
}



Zugehörige Verweise
Beispiel: Beispieladvisor
Referenzartikel Referenzartikel    

Nutzungsbedingungen | Feedback

last-updated-altLetzte Aktualisierung: Jul 5, 2011 11:00:34 AM EDT
Dateiname: rprf_advexreturn.html