Nossa que coincidencia isso, tava procurando por algo do tipo hj e tou travado com a mesma coisa.
Eu tentei primeiro com a classe Authenticator e nada… depois tentei desse mesmo jeito q vc fez e por aqui deu um erro http 503.
Quem puder ajudar eu ia ficar bem feliz.
E não vem dar dica de frameworks ou pacotes mágicos pra vc fazer uma conexao http pq isso nao eh nem uma coisa de outro mundo pelamor de deus.
private static void printResults(HttpURLConnection con, PrintWriter out)
throws IOException {
// abre a conexao pra input
BufferedReader br =
new BufferedReader(new InputStreamReader(con.getInputStream()));
// le ate o final
StringBuffer newData = new StringBuffer(1000);
String s = "";
while (null != ((s = br.readLine()))) {
newData.append(s);
}
br.close();
// imprime o codigo resultante
out.println(new String(newData));
// imprime o numero do resultado
out.println(
"Resultado: "
+ con.getResponseCode()
+ "/"
+ con.getResponseMessage());
}
/**
* Funcao principal
*
* @param args os argumentos da linha de comando
*/
public static void main(String[] args) {
String urlString = "http://localhost:8080/alfresco/command/script/execute";
try {
// os parametros
Properties parameters = new Properties();
parameters.setProperty("scriptPath", "/Company%20Home/listActions.js");
// se for o proxy host
//System.setProperty("http.proxyHost", "10.1.1.1");
//System.setProperty("http.proxyPort", "8080");
// o interador
Iterator i = parameters.keySet().iterator();
// o contador
int counter = 0;
// enquanto ainda existir parametros
while (i.hasNext()) {
// pega o nome
String name = (String) i.next();
// pega o valor
String value = parameters.getProperty(name);
// adiciona com um conector (? ou &)
urlString += (++counter == 1 ? "?" : "&") + name + "=" + value;
}
// cria o objeto
System.out.println("Url: " + urlString);
URL url = new URL(urlString);
// cria o objeto httpurlconnection
HttpURLConnection connection =
(HttpURLConnection) url.openConnection();
// seta o metodo
connection.setRequestProperty("Request-Method", "GET");
connection.setRequestProperty("Authorization", "Basic " + encode("admin" + ":"+ "admin"));
// seta a variavel para ler o resultado
connection.setDoInput(true);
connection.setDoOutput(false);
// conecta com a url destino
connection.connect();
// mostra os resultados na saida padrao
printResults(connection, new PrintWriter(System.out, true));
} catch (MalformedURLException ex) {
// se a url for invalida
System.err.println("Error: Invalid url: " + urlString);
} catch (IOException ex) {
// se ocorrer um erro de io
ex.printStackTrace();
}
}
public static String encode (String source) {
BASE64Encoder enc = new sun.misc.BASE64Encoder();
return(enc.encode(source.getBytes()));
}
}[/code]
Dah o seguinte erro!!
Url: http://localhost:8080/alfresco/command/script/execute?scriptPath=/Company%20Home/listActions.js
java.io.IOException: Server returned HTTP response code: 500 for URL: http://localhost:8080/alfresco/command/script/execute?scriptPath=/Company%20Home/listActions.js
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at org.ktex.app.HttpTest.printResults(HttpTest.java:34)
at org.ktex.app.HttpTest.main(HttpTest.java:126)
O engraçado que via browser ele funciona…mas só depois de autenticar!!
String urlString= "http://localhost:8080/alfresco/command/script/execute";
try {
// os parametros
Properties parameters = new Properties();
parameters.setProperty("scriptPath", "\\Company%20Home\\listActions.js");
// o interador
Iterator i = parameters.keySet().iterator();
// o contador
int counter = 0;
// enquanto ainda existir parametros
while (i.hasNext()) {
// pega o nome
String name = (String) i.next();
// pega o valor
String value = parameters.getProperty(name);
// adiciona com um conector (? ou &)
urlString += (++counter == 1 ? "?" : "&") + name + "=" + value;
}
// cria o objeto
System.out.println("Url: " + urlString);
URL url = new URL(urlString);
// cria o objeto httpurlconnection
HttpURLConnection connection =
(HttpURLConnection) url.openConnection();
// seta o metodo
connection.setRequestMethod("GET");
connection.setRequestProperty("Authorization", "Basic " + encode("admin" + ":"+ "admin"));
connection.setRequestProperty("Content-type", "text/html; charset=iso-8859-1");
// seta a variavel para ler o resultado
connection.setDoInput(true);
connection.setDoOutput(false);
// conecta com a url destino
connection.connect();
// mostra os resultados na saida padrao
printResults(connection, new PrintWriter(System.out, true));
} catch (MalformedURLException ex) {
// se a url for invalida
System.err.println("Error: Invalid url: " + urlString);
} catch (IOException ex) {
// se ocorrer um erro de io
ex.printStackTrace();
}
}
public static String encode (String source) {
BASE64Encoder enc = new sun.misc.BASE64Encoder();
return(enc.encode(source.getBytes()));
}
}[/code]
Eu estava escrevendo errado o parametro do scriptPath…