Http server

Status
Nicht offen für weitere Antworten.

Paddel

Bekanntes Mitglied
Hi ich möchte gerne das der Browser den User nach Passwort und Benutzername fragt.
Mit den Zeilen:
os.writeBytes(PROTOCOL + unautohricied + CRLF);
os.writeBytes(auth + CRLF);

sende ich:
HTTP/1.0401 UNAUTHORIZED

WWW-Authenticate: Basic realm="Geheimer Bereich"
Der Server gibt auch die Seite richtig aus. Nur diese Abfrage passiert einfach nicht. Kann mir jemand sagen was daran falsch ist: Hier nochmal der ganze Code falls was nich klar is.

Java:
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.DataOutputStream;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.PasswordAuthentication;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.StringTokenizer;

import javax.imageio.stream.FileImageInputStream;

import com.sun.java.util.*;
import com.sun.net.httpserver.Authenticator;
import com.sun.net.httpserver.HttpExchange;


public class OneShotHTTP extends Thread{
		public final static String CRLF = "\r\n";
		public final static String PROTOCOL ="HTTP/1.0";
		public final static String SC_OK = "200 OK";
		public final static String SC_BAD_REQUEST = "400 Bad Eequest";
		public final static String unautohricied = "401 UNAUTHORIZED";
		public final static String SC_FORBIDDEN = "403 Fobridden";
		public final static String SC_NOT_FOUND = "404 not Found";
		public final static String auth = "WWW-Authenticate: Basic realm=\"Geheimer Bereich\"";
		protected String statutsCode = SC_OK;
		protected  String getSC_OK() {
			return SC_OK;
		}
		protected void setStatusCode(String statuscode) {
			this.statutsCode = statuscode;
		}
		protected void sendStatusLine(DataOutputStream os){
			try {
				System.out.println(PROTOCOL + getSC_OK() + CRLF);
				os.writeBytes(PROTOCOL + getSC_OK() + CRLF);
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		private Socket s = null;
		public final static int port = 80	;
		private static String canonicalRoot;
		public static void main(String[] args) throws IOException {
			canonicalRoot = new File(".").getCanonicalPath();
			System.out.println(canonicalRoot);
			try {
				System.out.println("Start:");
				ServerSocket listen = new ServerSocket(port);
				if(listen.isBound())
					System.out.println("Port belegt");
				
				while(true){
						OneShotHTTP server = new OneShotHTTP(listen.accept());
				}
				
				
				
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		public OneShotHTTP(Socket s) {
				this.s = s;
				start();
		}
		public  void sendDocument(DataOutputStream os, File file){
			System.out.println("Dokument wird gesenedet mit " + file.getAbsolutePath());
			try {
				
			
				BufferedInputStream is = new BufferedInputStream(new FileInputStream(file));
//				sendStatusLine(os);
//				os.writeBytes(CRLF);
//				String auth = "HTTP/1.0200 OK" + CRLF + CRLF;
//				System.out.println("Drüber");
//				System.out.println(auth);
//	
				os.writeBytes(PROTOCOL + unautohricied + CRLF);
				System.out.println(PROTOCOL + unautohricied + CRLF);
				System.out.println(auth + CRLF);
				os.writeBytes(auth + CRLF);
				byte[] buf = new byte[1024];
				int len;
				
					while((len = is.read(buf, 0, 1024)) != -1){
				
						os.write(buf, 0 , 1024);
					}
					is.close();
					os.close();
					s.close();
				
			} catch (FileNotFoundException e) {
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
			
		}
		@Override
		public void run() {
			
			try {
				BufferedReader is = new BufferedReader(new InputStreamReader(s.getInputStream()));
				DataOutputStream os = new DataOutputStream(s.getOutputStream());
				String request;
				request = is.readLine();
		
			System.out.println("Amfrage: " + request);
			StringTokenizer tokenizer = new StringTokenizer(request);
			
			if(tokenizer.nextToken().equals("GET")  ){
				String fileString = tokenizer.nextToken();
				System.out.println(fileString);
		
				if(fileString.equals("/")){
					fileString = "index.html";
					
				}
				File file = new File("C:\\Dokumente und Einstellungen//Administrator//workspace//HTTP_Server//" + fileString);
				char slash = '\\';

//				if(!file.getCanonicalPath().equals( canonicalRoot + slash + fileString)){
//					System.err.println("403 Forbidden!");
//					s.close();
//				}
//				else
					sendDocument(os, file);
			}} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				
			}
			
			
		}
}
 
Zuletzt bearbeitet von einem Moderator:

HoaX

Top Contributor
evtl sollte es
HTTP/1.1 401 Authorization Required
heißen?

btw: "unautohricied" is echt geil ;)
 

Paddel

Bekanntes Mitglied
ja sry schreibfehler. Aber meine Frage war wie ich dann das Bild mit der Authentifizierung hinkriege das der User sich mit Namen und PWD anmelden muss...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Bei externem Hosting: Neben WildFly "normaler" http-Server nötig? Server einrichten und konfigurieren 3
U Normalen Apache-Http-Server und AS nebeneinander Server einrichten und konfigurieren 2
V One-Shot-HTTP-Server Server einrichten und konfigurieren 6
OnDemand Glassfish bricht zusammen HTTP 503 Server einrichten und konfigurieren 18
G Tomcat 6.0 von https auf http umstellen Server einrichten und konfigurieren 2
A Tomcat:Fehler HTTP Status 500 -> org.apache.jasper.Jasper Server einrichten und konfigurieren 1
K [Apache Axis v1.3] HTTP Basic Authentication Server einrichten und konfigurieren 1
B Volano Server einrichten Server einrichten und konfigurieren 4
W Schnittstelle zwischen Server und Smartwatch Server einrichten und konfigurieren 3
M Server akzeptiert neues Zertifikat nicht Server einrichten und konfigurieren 9
S Tomcat Server nicht erreichbar Server einrichten und konfigurieren 21
O Ich Suche GTA 5 RP Server Scripter für atl:V Server einrichten und konfigurieren 0
F Wie laufenden Docker Container auf Debian Server von außen über den Browser erreichen. Server einrichten und konfigurieren 3
M Keine Verbinung zu Java-Https-Server möglich (Handshake-Fail) Server einrichten und konfigurieren 7
J Eigenen Socket auf entferntem Server laufen lassen Server einrichten und konfigurieren 7
M embeddet Jetty Server mit MyFaces Howto gesucht Server einrichten und konfigurieren 0
S JRE distribution Server Server einrichten und konfigurieren 0
OnDemand Virtual Server in Glassfish findet Recource nicht Server einrichten und konfigurieren 1
I JAVA EE Server mit integrierter Datenbank Server einrichten und konfigurieren 0
OnDemand Glassfish: Properties wie auf Server Server einrichten und konfigurieren 1
M Java-EJB-Anwendung auf Server bzw. Client deployen Server einrichten und konfigurieren 0
D Daten auf Apache Tomcat Server ablegen, möglich ? Server einrichten und konfigurieren 1
J Java Programm auf Linux Server Laufen lassen Server einrichten und konfigurieren 6
M Günstigen Applikation Server? Server einrichten und konfigurieren 5
K Server aufsetzen Server einrichten und konfigurieren 6
M Wo Server hosten Server einrichten und konfigurieren 9
B FTP-Server einrichten. Server einrichten und konfigurieren 10
M Glassfish server rendert keine Tags Server einrichten und konfigurieren 4
R Multi-Server Architektur im AS (JBOSS/Glassfish) realisieren Server einrichten und konfigurieren 2
P Ortung von Usern und Umleitung an Server in GlassFish? Server einrichten und konfigurieren 7
P JBoss 7 Server log4j.jar Server einrichten und konfigurieren 10
P JBoss Server Server einrichten und konfigurieren 2
G Am Server Dateien ablegen Server einrichten und konfigurieren 20
G Server Config File Server einrichten und konfigurieren 2
C [Glassfish] Entfernten Glassfish Server in Eclipse verbinden Server einrichten und konfigurieren 3
G Offener Port am Server Server einrichten und konfigurieren 17
T App Server für Ubuntu gesucht Server einrichten und konfigurieren 9
ruutaiokwu svn server auf lokalem filesystem unter windows einrichten Server einrichten und konfigurieren 14
M Hardwareempfehlung für TOMCAT Server Server einrichten und konfigurieren 8
D Probleme Installation JBoss Application Server Server einrichten und konfigurieren 5
R Spring Server für Spring-Framework notwendig? Server einrichten und konfigurieren 3
R Kann SpringSource dm-Server nicht starten Server einrichten und konfigurieren 5
G Tomcat server.xml einrichten Server einrichten und konfigurieren 1
G pendant zu globalem tomcat web.xml im ibm websphere-server Server einrichten und konfigurieren 2
C Eclipse und externer Tomcat Server Server einrichten und konfigurieren 6
C XAMPP auf 1und1 root server Server einrichten und konfigurieren 2
S Eine Frage zu log4j, jboss an sql-server (im teigmantel ;) ) Server einrichten und konfigurieren 3
J Tomcat, web.xml, server.xml -> Projektpfad Server einrichten und konfigurieren 18

Ähnliche Java Themen

Neue Themen


Oben