tabla solucion respuesta para pagina estado erróneo error devuelto código codigos codigo java tomcat https http-status-code-401

java - solucion - la url ha devuelto un código de respuesta http erróneo facebook



El servidor devolvió el código de respuesta HTTP: 401 para URL: https (2)

401 significa "No autorizado", por lo que debe haber algo con sus credenciales.

Creo que la URL java no es compatible con la sintaxis que está mostrando. Podría usar un Autenticador en su lugar.

Authenticator.setDefault(new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(login, password.toCharArray()); } });

y luego simplemente invocando la url normal, sin las credenciales.

La otra opción es proporcionar las credenciales en un encabezado:

String loginPassword = login+ ":" + password; String encoded = new sun.misc.BASE64Encoder().encode (loginPassword.getBytes()); URLConnection conn = url.openConnection(); conn.setRequestProperty ("Authorization", "Basic " + encoded);

PD: No se recomienda usar ese Base64Encoder, pero esto es solo para mostrar una solución rápida. Si desea mantener esa solución, busque una biblioteca que sí lo haga. Hay bastantes.

Estoy usando Java para acceder a un sitio HTTPS que devuelve la pantalla en formato XML. Paso las credenciales de inicio de sesión en la URL misma. Aquí está el fragmento de código:

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); requestURL = "https://Administrator:Password@localhost:8443/abcd"; try { InputStream is = null; URL url = new URL(requestURL); InputStream xmlInputStream =new URL(requestURL).openConnection().getInputStream(); byte[] testByteArr = new byte[xmlInputStream.available()]; xmlInputStream.read(testByteArr); System.out.println(new String(testByteArr)); Document doc = db.parse(xmlInputStream); System.out.println("DOC="+doc); } catch (MalformedURLException e) { }

Estoy creando un administrador de confianza en el programa que no valida los certificados firmados / no firmados. Pero, al ejecutar el programa anterior, aparece el error. El servidor devolvió el código de respuesta HTTP: 401 para URL: https: // Administrador: Contraseña @ localhost: 8443 / abcd

Puedo usar la misma url en mi navegador y muestra el xml correctamente. Amablemente déjame saber cómo hacer que esto funcione dentro del programa Java.


Prueba esto. Necesita pasar la autenticación para que el servidor sepa que es un usuario válido. Debe importar estos dos paquetes y debe incluir un jersy jar. Si no quieres incluir jersy jar entonces importa este paquete

import sun.misc.BASE64Encoder; import com.sun.jersey.core.util.Base64; import sun.net.www.protocol.http.HttpURLConnection;

y entonces,

String encodedAuthorizedUser = getAuthantication("username", "password"); URL url = new URL("Your Valid Jira URL"); HttpURLConnection httpCon = (HttpURLConnection) url.openConnection(); httpCon.setRequestProperty ("Authorization", "Basic " + encodedAuthorizedUser ); public String getAuthantication(String username, String password) { String auth = new String(Base64.encode(username + ":" + password)); return auth; }