Ver mensagens sem resposta | Ver tópicos ativos Hoje é 20 Jun 2013, 01:19



Responder Tópico  [ 3 Mensagens ] 
 Android Ksoap2 consumindo webservice PHP 
Autor Mensagem
What is Android?
What is Android?

Data de registro: 04 Out 2012, 23:35
Mensagens: 1
Mensagem Android Ksoap2 consumindo webservice PHP
Boa noite,

Estou programando um aplicativo Android, no qual tenho uma tela de login basica, que deve se comunicar com um webservice em PHP (banco de dados Mysql) e retornar 1 (Login com sucesso) ou 0 (Aluno não encontrado).

* Arquivos para o Webservice:

Para isso fiz um arquivo classe XML (Xml.Class.php) que irá formatar o resultado da consulta feita no webservice e retornará um arquivo em formato XML.

<?php
class Xml{
//atributos
private $xml;
private $tab = 1;

//metodos
public function __construct($version = '1.0', $encode = 'ISO-8859-1')
{ $this->xml .= "<?xml version='$version' encoding='$encode' ?>\n";
}


public function openTag($name){
$this->addTab();
$this->xml .= "<$name>\n";
$this->tab++;
}

public function closeTag($name){
$this->tab--;
$this->addTab();
$this->xml .= "</$name>\n";
}

public function setValue($value){
$this->xml .= "$value\n";
}

private function addTab(){
for ($i = 1; $i <= $this->tab; $i++){
$this->xml .= "\t";
}
}

public function addTag($name, $value){
$this->addTab();
$this->xml .= "<$name>$value</$name>\n";
}

public function __toString(){
return $this->xml;
}
}
?>


O arquivo conexao.php, é a configuracao para conexao ao banco de dados.

<?php

function abrir_conexao()
{
$conexao= mysql_connect("localhost", "", "") or die("a conexão com o servidor
mysql não foi possível.erro:".mysql_error());
$bd= mysql_select_db("BANCO",$conexao) or die("Não foi possível selecionar o db
testfatec.erro: ".mysql_error());
}

?>


O arquivo index2.php é meu webservice, que ao receber o ra e a senha do usuario, faz a consulta no banco de dados e nos traz o resultado em formato xml.

<?php
include_once("conexao.php");
include_once("Xml.Class.php");

error_reporting(0);


$server = new SoapServer(null, array("uri" => "http://localhost/app/soap", "encoding" => "ISO-8859-1"));

function teste()
{ return ("Ok");
}

function consultar($ra, $password)
{
$xml = new Xml();

$erro = 0;

$msgerro = '';

$xml->openTag("response");

if($ra == ''){
$xml->addTag('erro', 0);
$msg = 'RA não preenchido';
$xml->addTag('msg', $msg);
}

else{

abrir_conexao();

$sql = "SELECT NO BANCO DE DADOS";

$resultado = mysql_query($sql);

if(mysql_num_rows($resultado) > 0){
$reg = mysql_fetch_object($resultado);
$xml->addTag('erro', 1);
$msg = 'Login com sucesso';
$xml->addTag('msg', $msg);

}

else{
$erro = 0;
$xml->addTag('erro', $erro);
$msg = 'Aluno não encontrado!';
$xml->addTag('msg', $msg);
}
}

$xml->closeTag("response");

//echo $xml; //exibe todo conteudo da variavel xml

mysql_free_result($resultado);
return ($xml);
}


$servidor->addFunction("teste");
$servidor->addFunction("consultar");


if ($_SERVER["REQUEST_METHOD"] == "POST")
{ $servidor->handle();
}
else
{ $funcoes = $servidor->getFunctions();
echo "<h2>Métodos publicados:</h2>";
echo "<ul>";
foreach ($funcoes as $funcao)
{ echo "<li>". $funcao;
}
echo "</ul>";
}

$str = file_get_contents('file.utf8.csv');


?>



Na parte Android (cliente), temos a classe da tela de login, que deve receber o ra e a senha, alem de passar para a classe do webservice os parametros:

Loginuser.java

EditText ura,pw;
TextView error;


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE); // oculta barra de titulo do app
setContentView(R.layout.loginuser);
ura=(EditText)findViewById(R.id.editText2);
pw=(EditText)findViewById(R.id.editText1);
}


public void logar(View X) {
TextView tv = (TextView) findViewById(R.id.tv);
tv.setText("BOTAO");

ura=(EditText)findViewById(R.id.editText2);
pw=(EditText)findViewById(R.id.editText1);

Wssoap ws = new Wssoap();

TextView tv2 = (TextView) findViewById(R.id.tv2);
tv2.setText(ws.Consultar("", ""));}



Além da classe com os parametros do Webservice, que utiliza a biblioteca KSOAP2.

public class Wssoap {

private static final String SOAP_ACTION = "http://IPDOSERVIDOR/consultar";
private static final String METHOD_NAME = "consultar";
private static final String NAMESPACE = "http://IPDOSERVIDOR/";
private static final String URL = "http://IPDOSERVIDOR/app/soap/index2.php";


public String Consultar(String ra, String password) {
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
request.addProperty("ra", ra);
request.addProperty("password", password);

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
//envelope.dotNet = false;
envelope.setOutputSoapObject(request);
try {
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
androidHttpTransport.call(SOAP_ACTION, envelope);
SoapPrimitive result = (SoapPrimitive) envelope.getResponse();
return result.toString();
} catch (Exception e) {
return ("ERRO: " + e.getMessage());
}
}



Mas tem um problema, quando executo o programa, ao apertar o botão.. no local da TextView tv2 aparece ERRO:null. Alguém tem uma dica do que posso fazer? Ja estou procurando uma solução há 2 semanas..


Muito obrigada.


05 Out 2012, 00:27
Perfil
What is DDMS?
What is DDMS?

Data de registro: 06 Jan 2011, 08:31
Mensagens: 36
Mensagem Re: Android Ksoap2 consumindo webservice PHP
Caramba ...
Acredita que eu tenho o mesmo problema, porém com o
android:targetSdkVersion=8
no maninfest ele funciona, mas como a aplicação tem que ser no android:targetSdkVersion=15 , ele para de funcionar !
Tenta rodar com 8 ... se funcionar se junte a mim pra resolver a funcionar nas novas versoes ...


26 Out 2012, 11:14
Perfil
What is DDMS?
What is DDMS?

Data de registro: 06 Jan 2011, 08:31
Mensagens: 36
Mensagem Re: Android Ksoap2 consumindo webservice PHP
Descobri o motivo do problema.
No android 3 ou mais recente, qualquer rotina de acesso à internet deve ser feito por meio de Thread !
Ex .:

Thread networkThread = new Thread() {
@Override
public void run() {

try {
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);

request.addProperty("login", txtLogin.getText().toString() );
request.addProperty("senha", txtSenha.getText().toString());

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet=true;
envelope.setOutputSoapObject(request);
HttpTransportSE ht = new HttpTransportSE(URL);
ht.call(SOAP_ACTION, envelope);
final SoapPrimitive response = (SoapPrimitive)envelope.getResponse();
final String str;
str = response.toString();
runOnUiThread (new Runnable(){
public void run() {
TextView result;
result = (TextView)findViewById(R.id.txtResult);//Text view id is textView1
result.setText(str);
if (str.contains("validado")){
Intent it = new Intent(Login.this,
Atualizacao.class);
Login.this.startActivity(it);
finish();
btnEntrar.setEnabled(true);
}
}
});
}
catch (Exception e) {
e.printStackTrace();
}
}
};
networkThread.start();


31 Out 2012, 15:04
Perfil
Mostrar mensagens anteriores:  Organizar por  
Responder Tópico   [ 3 Mensagens ] 

Quem está online

Usuários vendo este fórum: Abraao, ac0502, Aderbal Nunes, akaytatsu, alberto, allone, Andre, Androidthebest, billsombrio, bomcabelo, bozzano, bruno.abd, burujo, C0GuM3I0, camilodev, carlos rodrigues, carlos.macleod, Chassot, chunga, Costa, Cynthia, Darth Vader, deivisonrpg, developermaster, dikiloco, dirceuconte, edervieira, edlinux, Eduardo - Brasil, EduardoYC, erikopa, estratec, everaldo, EvertonLB, fabielp, faco, fernando neves, flashking, flaviojps, flaviolemos, free_w3000, FVB, Gabriel Laet, genildof, gfgodoy, guilhermesmo, Ielo8, inesfg, interservic, itsN, ixian, jacard, JackBlackJack, jackstuard, Jango Fett, Jar Jar Binks, jrchuteboxe, juliana_costa, Ki-Adi-Mundi, konos, kusanaguy, leofernandesmo, LForce, Lindberg, linukiss, lucasB, luciocamilo, luizfilipe, Lúcio Zanette, Machado000, maiconjunches, maolveira, marcelosv, maurofjr, Microdesk, Mig, mikasjau, Mvitor, Orivalde, paulabr, Paulo, phfmendes, pomarolli, rayberg, regis.ror, renegheller, ricardo_listadelphi, robertofonte, Rodrigo, rogeriokta, romuloff, romulotales, rubens_olv, samuel.cavanieri, scattonevi, sidnei.gs, SidneiCP, srmoreira, suportecr, taluna, tchou, teamamus, Telekom [Bot], Thelemita, thosjanas, tiagocordeiro, tirloni, waideman, wilsond, WiseNut e 3 visitantes


Você não pode criar novos tópicos neste fórum
Você não pode responder tópicos neste fórum
Você não pode editar suas mensagens neste fórum
Você não pode excluir suas mensagens neste fórum
Você não pode enviar anexos neste fórum

Procurar por:

© 2007 - 2013 Portal Android - Comunidade de Desenvolvedores da Plataforma Android

Estamos no Linkedin    Siga-nos no twitter


Powered by phpBB - Hospedado por Bemobi