Lotus Notes / Domino Sonstiges > Java und .NET mit Notes/Domino
Durch die Firewall
Axel Janssen temp:
Der andere Weg wird hier beschrieben:
http://www.developer.com/java/other/article.php/1551421
Axel Janssen temp:
Benoits Marchals Artikel oben brachte die Lösung... und eine gute theoretische Erklärung.
--- Zitat ---Increasingly, companies require employees to log in to the proxy before accessing the Internet. Login is used to better monitor Internet usage; for example, to monitor what sites are visited.
--- Ende Zitat ---
... und wie oben angemerkt, erwarten die meisten Proxies Username, Password Base64 encoded. Vermutlich funktioniert deshalb die Lösung vom Freitag mit dem username und password property nicht (wird nicht base64 encoded)
Die zweite Lösung funktioniert problemlos.
Bei der ersten Lösung stellt sich zumindest in Domino6 die Notes-Java-Agent-Security in den Weg.
Ich habs nicht ausprobiert, aber hier ist wohl die Lösung, um dieses Problem auszuschalten.
diskussion auf notes.net
wie gesagt: Agent2 läuft hier problemlos. Wäre nett, wenn das andere hinter Firmenfirewalls auch mal ausprobieren könnten:
DEIN_NAME, DEIN_PASSWORT, DEIN_PROXY mit eigenen Werten ersetzen.
lsg 1: scheitert an Policy, die verändert werden kann.
--- Code: ---import lotus.domino.*;
import java.io.*;
import java.net.*;
import java.util.*;
public class JavaAgent extends AgentBase {
public void NotesMain() {
try {
Session session = getSession();
AgentContext agentContext = session.getAgentContext();
// (my code walks here)
String url = "http://www.marchal.com/",
proxy = "DEIN_PROXY",
port = "8080",
username = "DEIN_NAME",
password = "DEIN_PASSWORT";
Authenticator.setDefault(new SimpleAuthenticator(
username,password));
URL server = new URL(url);
Properties systemProperties = System.getProperties();
systemProperties.setProperty("http.proxyHost",proxy);
systemProperties.setProperty("http.proxyPort",port);
HttpURLConnection connection = (
HttpURLConnection)server.openConnection();
connection.connect();
InputStream in = connection.getInputStream();
BufferedReader inReader = new BufferedReader(new InputStreamReader(in));
String inputLine;
while ((inputLine = inReader.readLine()) != null)
System.out.println(inputLine);
// (my code stops here)
} catch(Exception e) {
e.printStackTrace();
}
}
}
class SimpleAuthenticator
extends Authenticator
{
private String username,
password;
public SimpleAuthenticator(String username,String password)
{
this.username = username;
this.password = password;
}
protected PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication(
username,password.toCharArray());
}
}
--- Ende Code ---
lsg2 funktioniert:
--- Code: ---import lotus.domino.*;
import java.io.*;
import java.net.*;
public class JavaAgent extends AgentBase {
public void NotesMain() {
try {
Session session = getSession();
AgentContext agentContext = session.getAgentContext();
int port = 8080;
String url = "http://www.marchal.com/",
proxy = "DEIN_PROXY",
authentication = "DEIN_NAME!!!:DEIN_PASSWORT";
URL server = new URL(url);
Socket socket = new Socket(proxy,port);
Writer writer = new OutputStreamWriter(socket.getOutputStream(),
"US-ASCII");
writer.write("GET " + server.toExternalForm() + " HTTP/1.0\r\n");
writer.write("Host: " + server.getHost() + "\r\n");
writer.write("Proxy-Authorization: Basic "
+ new sun.misc.BASE64Encoder().encode(
authentication.getBytes())
+ "\r\n\r\n");
writer.flush();
BufferedReader reader = new BufferedReader(new InputStreamReader(
socket.getInputStream(),"US-ASCII"));
String line = reader.readLine();
if(line != null && line.startsWith("HTTP/"))
{
int sp = line.indexOf(' ');
String status = line.substring(sp + 1,sp + 4);
if(status.equals("200"))
{
while ((line = reader.readLine()) != null) {
System.out.println(line); }
}
else
throw new FileNotFoundException("Host reports error " +
status);
}
else
throw new IOException("Bad protocol");
reader.close();
writer.close();
socket.close();
} catch(Exception e) {
e.printStackTrace();
}
}
}
--- Ende Code ---
Scorp:
GEIL!!!!! :D
Vielen Dank an alle die mir in meinen 3 Postings hier im "JAVA für Anfänger" geholfen haben!
Vor allem an "Axel_Janssen" der nicht (öffenltich ;) ) die Nerven wegen meinen Fragen verloren hat.
Also habe jetzt den 2-ten Code ausprobiert und er arbeitet tadellos.
Scorp:
Hi nochmal nen hoffentlich kleines Problem, habe jetzt die Lösung 2 in mein Programm eingebaut, funktioniert auch weitgehend sehr gut.
Doch ein Problem hab ich noch, er (der Agent) erkennt z.B. "http://www.alpa.ch/alpa/" als nicht vorhanden (404), sie existiert aber
auch "http://www.adobe.de/products/acrobat/readstep.html"
kann er nicht aufrufen, gibt es dafür einen speziellen Grund und wenn ja kann man dieses Problem umgehen?
Semeaphoros:
<OT>
Mensch, da kriegt ja das Portemonnaie gleich ein Loch, wenn man die Site schon nur anschaut .... :-))
</OT>
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln