estoy tratando de imitar la funcionalidad de este comando curl en Java:Http Basic Authentication in Java using HttpClient?
curl --basic --user username:password -d "" http://ipaddress/test/login
escribí lo siguiente utilizando los Comunes HttpClient 3.0 pero de alguna manera terminó encima de conseguir un 500 Internal Server Error
desde el servidor. ¿Puede alguien decirme si estoy haciendo algo mal?
public class HttpBasicAuth {
private static final String ENCODING = "UTF-8";
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
HttpClient client = new HttpClient();
client.getState().setCredentials(
new AuthScope("ipaddress", 443, "realm"),
new UsernamePasswordCredentials("test1", "test1")
);
PostMethod post = new PostMethod(
"http://address/test/login");
post.setDoAuthentication(true);
try {
int status = client.executeMethod(post);
System.out.println(status + "\n" + post.getResponseBodyAsString());
} finally {
// release any connection resources used by the method
post.releaseConnection();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Y más tarde probé una Commons HttpClient 4.0.1 pero sigue siendo el mismo error:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
public class HttpBasicAuth {
private static final String ENCODING = "UTF-8";
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
DefaultHttpClient httpclient = new DefaultHttpClient();
httpclient.getCredentialsProvider().setCredentials(
new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT),
new UsernamePasswordCredentials("test1", "test1"));
HttpPost httppost = new HttpPost("http://host:post/test/login");
System.out.println("executing request " + httppost.getRequestLine());
HttpResponse response;
response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
System.out.println("----------------------------------------");
System.out.println(response.getStatusLine());
if (entity != null) {
System.out.println("Response content length: " + entity.getContentLength());
}
if (entity != null) {
entity.consumeContent();
}
httpclient.getConnectionManager().shutdown();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
um, cuál es el error a aparecer en los registros del servidor? – hvgotcodes
Ah ... No tengo acceso a los registros del servidor :( – Legend
La mayoría de las veces la clave de autorización que estamos utilizando podría estar equivocada. Compruebe http://dev.tapjoy.com/faq/how-to- find-sender-id-and-api-key-for-gcm/para ver si está usando la clave correcta o no. También me confundí al seleccionar la clave API para firebase Tenemos que usar SENDER ID - API KEY pair en Cloud ficha Mensaje de configuración bajo firebase es decir Ir a base de fuego App -.> Ir a la configuración de aplicación -.> mensajería en la nube allí se puede encontrar ID del remitente <==> API clave y esta clave de API se puede utilizar para enviar FCM – Rahul