El objeto RequestBuilder sustituye al antiguo HTTPRequest al extender la funcionalidad.
El principal contratiempo que obtuve es que PHP no procesa los parámetros get sin la cabecera 'Content-Type: application/x-www-form-urlencoded', así que simplemente añadimos la cabecera y PHP hará el trabajo sucio de procesar los parámetros.
Por otro lado, la URL que se indica puede ser tanto absoluta como relativa, por ejemplo, si el servidor está alojado en http://www.midominio.com/, en el navegador tenemos cargada la dirección http://www.midominio.com/gwt/index.html y queremos acceder mediante ajax al fichero que se encuentra en http://www.midominio.com/ajax/fichero.php tenemos varias alternativas:
- Absoluta: http://www.midominio.com/ajax/fichero.php
- Relativa respecto del dominio: /ajax/fichero.php
- Relativa respecto del directorio actual: ../ajax/fichero.php
RequestBuilder rc = new RequestBuilder(RequestBuilder.POST, "/api/login.php");
rc.setRequestData("login="+login_login.getText()+"&password="+login_password.getText());
rc.setHeader("Content-Type","application/x-www-form-urlencoded");
rc.setCallback(new RequestCallback() {
@Override
public void onResponseReceived(Request request, Response response) {
// TODO Auto-generated method stub
Window.alert(response.getText());
}
@Override
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
}
});
try {
rc.send();
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}