Я занимаюсь разработкой клиентского приложения, которое подключается к серверу, созданному с помощью php-скрипта с XMLRPC. Я пытался найти информацию, но не нашел ничего подробного, что пошагово. Я должен заставить клиента подключиться к этому php. Я хотел, чтобы он подключился и возвратил «подключенное» текстовое представление или ошибку подключения.
@Override
protected void onCreate(Bundle savedInstanceState) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try {
url = new URL("http://192.168.1.23/wos.php");
} catch (java.net.MalformedURLException ex){
Toast.makeText(MainActivity.this, "Error de URL: "+ex.getMessage(), Toast.LENGTH_LONG);
}
txt = (TextView) findViewById(R.id.text_view);
btn = (Button) findViewById(R.id.btnPrueba);
client = new XMLRPCClient(url);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
connSrvPhp_sincrona();
}
});
}
public void connSrvPhp_sincrona(){
try {
Object o = client.call("login");
} catch(XMLRPCServerException ex) {
//Errores del server
String s = ex.getMessage();
Toast.makeText(MainActivity.this, "Error de Servidor: "+ex.getMessage(), Toast.LENGTH_LONG).show();
} catch(XMLRPCException ex) {
//Errores del cliente
String s = ex.getMessage();
Toast.makeText(MainActivity.this, "Error del Cliente: "+ex.getMessage(), Toast.LENGTH_LONG).show();
} catch(Exception ex) {
//Otros errores
String s = ex.getMessage();
Toast.makeText(MainActivity.this,"Errores Varios: "+ex.getMessage(), Toast.LENGTH_LONG).show();
}
}
PHP:
use PhpXmlRpc\Value;
function login($req)
{
$err = "";
if (count($req) == 0){
return new PhpXmlRpc\Response(0, PhpXmlRpc\PhpXmlRpc::$xmlrpcerruser, "Parámetros incorrectos");
}
// get the first param
$usuario = $req->getParam(0);
$password = $req->getParam(1);
// param must be there and of the correct type: server object does the validation for us
// extract the value of the state number
$vUsuario = $usuario->scalarval();
$vPassword = $password->scalarval();
if (($vUsuario != 1) && ($vPassword != 1)){
$err = "Error en la validación de usuario y contraseña";
}
// if we generated an error, create an error return response
if ($err) {
return new PhpXmlRpc\Response(0, PhpXmlRpc\PhpXmlRpc::$xmlrpcerruser, $err);
} else {
// otherwise, we create the right response with the state name
return new PhpXmlRpc\Response(new Value("000000000001"));
}
}
$login_sig = array(array(Value::$xmlrpcString, Value::$xmlrpcString,
Value::$xmlrpcString,));
$login_doc = 'Valida al usuario y contraseña con un hash';
$signatures = array(
"examples.login" => array(
"function" => "login",
"signature" => $login_sig,
"docstring" => $login_doc,
),
);
// enable support for the NULL extension
PhpXmlRpc\PhpXmlRpc::$xmlrpc_null_extension = true;
$s = new PhpXmlRpc\Server($signatures, false);
$s->setdebug(3);
$s->compress_response = true;
$s->service();
Вы должны подключиться и, используя это имя пользователя и пароль, вы должны вернуть эти цифры. Я следовал этому уроку https://github.com/gturri/aXMLRPC но я не уточняю много. Правда совершенно потеряна в этой теме.
Цель состоит в том, чтобы подключиться к серверу php
Задача ещё не решена.
Других решений пока нет …