Alle Informationen eines Seiten-Aufrufs auslesen

Andron

Erfahrenes Mitglied
Mein Problem ist folgendes:
Ich möchte alle Header-Informationen eines Aufurfs auslesen.
Z.B. beim Aufruf einer Internet-Seite wird nicht nur die angeforderte Seite geliefert, sondern auch andere nachgeliefert (z.B. Bilder). In meinem Fall muss ich ein JNLP-Aufruf testen, dabei werden mehrere Jar-Files übertragen. Diese Header-Information möchte ich auslesen.

Bin jetzt so weit:
Code:
package urltest;

public class UrlTest
{
	private static String url = "http://localhost/jnlptest/jnlptest.jnlp";
	
	public static void main (String args[])
	{
		Tester tester = new Tester(url);
		tester.startTest();
	}
}

Code:
package urltest;

import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;

public class Tester
{
	private String url_s = null;
	
	public Tester(String u)
	{
		this.url_s = u;
	}
	
	public void startTest()
	{
		try
		{
			URL url = new URL(url_s);
			URLConnection conn = url.openConnection();			
			for (int i=0; ; i++) 
	        {
	            String headerName = conn.getHeaderFieldKey(i);
	            String headerValue = conn.getHeaderField(i);
	            if (headerName == null && headerValue == null) 
	            {
	                // No more headers
	                break;
	            }
	            if(headerName==null) headerName="Status";
	            System.out.println(headerName+": "+headerValue);
	            	            
	        }	    						
		} catch (MalformedURLException e)
		{
			e.printStackTrace();
		} catch (IOException e)
		{
			e.printStackTrace();
		}
	}
}
Damit erhalte ich folgedes:
Code:
Status: HTTP/1.1 200 OK
Date: Fri, 18 May 2007 08:53:19 GMT
Server: Apache/2.2.4 (Win32)
Last-Modified: Tue, 15 May 2007 13:21:32 GMT
ETag: "9d3a-280-1cb8073b"
Accept-Ranges: bytes
Content-Length: 640
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: application/x-java-jnlp-file

Das ist aber nicht alles. Ich habe ein Programm gefunden, das nennt sich HTTP Analyzer. Das ist genau das, was ich brauche, nur nicht in dem Umfang, außerdem muss es automatisch laufen und die Information in bestimmten Zeitintervallen abspeichern und zippen usw.
Ich habe ein Bild gemacht, was es tut.
Das mit rot umrandene ist der Aufruf. Dann sieht man, welche Jar's übertragen wurden. Und dazu auch die Header-Informationen.
Wie kommt man an sie ran?
Wäre für jede Hilfe dankbar.
 

Anhänge

  • bild.JPG
    bild.JPG
    82,7 KB · Aufrufe: 33
Einfach mal ins Blaue geraten: Du liest nur den Header aus, die URL's zu den Jar-Dateien stehen aber im Body, nämlich der jnlp-Datei.
Ergänz mal um folgendes:
Java:
InputStream in = conn.getInputStream();
int len = -1;
byte[] buf = new byte[4096];

while( ( len = in.read( buf ) ) > 0 )
{
  System.out.print( new String( buf, 0, len ) );
}

Gruß
Tobias
 
Hallo,

der OP will die Informationen haben die dir der Http Server liefert... (Content-Length, Status, Connection ...etc.) das steht nicht in der JNLP ;-) Das kommt vom Webserver.

Gruß Tom
 
*nochmalles*
Versteh ich anders :)

In meinem Fall muss ich ein JNLP-Aufruf testen, dabei werden mehrere Jar-Files übertragen. Diese Header-Information möchte ich auslesen.

Ist keine Headerinformation, diese Jar-Files stehen IMHO in der jnlp-Datei.

Damit erhalte ich folgedes:
Code:
Status: HTTP/1.1 200 OK
Date: Fri, 18 May 2007 08:53:19 GMT
Server: Apache/2.2.4 (Win32)
Last-Modified: Tue, 15 May 2007 13:21:32 GMT
ETag: "9d3a-280-1cb8073b"
Accept-Ranges: bytes
Content-Length: 640
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: application/x-java-jnlp-file

Das hat er schon, das braucht er aber nicht ;)

@Op was meinst du :D

Gruß
Tobias
 
Hallo,

och je.. ich sollte mir angewöhnen die Posts auch manchmal zu lesen... ;-)
Du hast recht... er möchte wissen welche jars noch von der JNLP datei referenziert werden. Okay, dann musst du wirklich die JNLP Datei ziehen und schauen was dort an jars angegeben ist.

Gruß Tom
 
Zurück