Jump to content
Sign in to follow this  
Scotshild

WebService + Ksoap2

Recommended Posts

Olá pessoal, estou fazendo um trabalho da faculdade que tem um webservice. acontece que inicialmente eu quero só fazer um teste pra saber se minha aplicação ta conseguindo conectar no WebService de boa.

O WebService está hospedado na universidade e tem o seguinte endereço:

http://sistema.unir.br:8080/wsunir/ServicosAcademicosService?wsdl

A parte de teste que estou fazendo é com a função "consultar". Se eu digitar "1" o retorno deve ser "olá 1". É apenas uma função para teste.

O problema é que no momento de fazer a conexão ele entra, faz a conexão, mas quando vai pegar o resultado ele não consegue e pula para o catch.

Meu objeto usuario tem apenas uma string, é só pra guardar esse "Olá 1" que vai retornar...

Usuario.java

public class Usuario {
private String msg;

public Usuario(){

}

public Usuario(String msg) {
super();
this.msg = msg;
}

public String getMsg() {
return msg;
}

public void setMsg(String msg) {
this.msg = msg;
}

public String toString(){
return "Mensagem: "+ this.msg;
}

}

Meu UsuarioDAO tem apenas a função de consultar

UsuarioDAO.java

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;

import android.util.Log;


public class UsuarioDAO {
private static final String URL = "http://sistema.unir.br:8080/wsunir/ServicosAcademicosService?wsdl";
private static final String NAMESPACE = "http://ws.unir.br/";

private static final String CONSULTAR = "consultar";

public Usuario consultar(String id){
Usuario usr=null;

SoapObject buscarUsuario = new SoapObject(NAMESPACE, CONSULTAR);
buscarUsuario.addProperty("id", id);

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.setOutputSoapObject(buscarUsuario);
envelope.implicitTypes = true;

HttpTransportSE http = new HttpTransportSE(URL);


try {
http.call("urn:" + CONSULTAR, envelope);

//PASSOU DO HTTP.CALL

SoapObject resposta = (SoapObject) envelope.getResponse();

//AQUI ELE NÃO PASSOU E FOI PARA O CATCH

usr = new Usuario();

usr.setMsg(resposta.getProperty(0).toString());

} catch (Exception e) {
usr = new Usuario();
usr.setMsg("Falha na Conexão");
e.printStackTrace();
//return null;
}
return usr;
}
}

O MainActivity só mostra o que deu de resposta...

Em user = dao.consultar("1"); eu estou enviando esse 1 porque quero obter a resposta "Olá 1" MainActivity.java

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends Activity {

@override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Usuario user = new Usuario();

UsuarioDAO dao = new UsuarioDAO();

user = dao.consultar("1");

TextView view = new TextView(this);
view.setText(user.getMsg());
setContentView(view);

}
}

Por favor pessoal, me ajudem aí eu nao sei porque ele não está obtendo essa resposta do WebService. Já tentei muito resolver e não consegui.

Em XML, a resposta obtida é essa:

<?xml version="1.0" encoding="UTF-8"?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<S:Body>
<ns2:consultarResponse xmlns:ns2="http://ws.unir.br/">
<return>Olá 1</return>
</ns2:consultarResponse>
</S:Body>
</S:Envelope>

Obs.: biblioteca ksoap2 instalada perfeitamente e funcionando.

Obs.2.: Realizei testes do WebService com o SoapUI e sim, ele está funcionando.

O stack está acusando nullPointerException, mas não sei o porquê. Sei que a minha aplicação é Android, mas meu problema é intrínseco com Java. Por favor, me ajudem.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Similar Content

    • By MateusOFCZ
      Olá, estou desenvolvendo um projeto de registro de clientes em java no netbeans e usando o MySQL Workbench e Xampp, gostaria de saber se é possível fazer com que o programa fique verificando se está conectado com o banco de dados, e caso não esteja ele mostra uma mensagem pedindo para o usuário se conectar em uma rede, caso ele se conecte o programa irá esconder essa mensagem e funcionará normalmente.

      Eu consegui fazer com que ele mostre se está conectado ou não, porém se eu desligar o servidor ele não atualiza mostrando que está offline, ele continua como online...
    • By brunoogm
      Pessoal estou desenvolvendo em Android Studio mas estou com o seguinte problema:
      Todos os inserts onde eu coloco alguma palavra composta ele da erro no app, porem todos os inserts com campos sem o espaço eles funcionam
       
      Ex: se eu for inserir "NOME SOBRENOME"  ele me devolve erro (com espaço)
      mas se eu inserir "NOMESOBRENOME" ele funciona normalmente (sem espaço)
       
      Ja configurei o android pra ISO 8859-1 e também pra UTF-8 mas nenhum dos dois me resolveu os problemas.
       
      Alguém tem alguma sugestão do que pode ser ?
    • By Robson Augusto
      Boa noite galera, não tenho conhecimento em programação, o que desenvolvi em meu site atualmente foi através de pesquisas e curiosidade em aprender e modelar site por conta própria.
      Hoje estou com um problema quanto a velocidade do site, muitas JS bloqueando a renderização do site, eu cheguei a tentar jogar todo JS para fim da página "footer", mas algumas páginas se desconfigurarão, então eu gostaria de pedir ajuda a vocês, sobre como eu deixo meu site mais rápido sem desconfigurar as páginas... Ou como adicionar o async dentro dessas funções!?
      Segue o php de chamadas do css e js
       
      <?php
      class CaryAssets
      {
          var $location;
          var $section;
          public function __construct()
          {
              $this->location = Rewrite::newInstance()->get_location();
              $this->section = Rewrite::newInstance()->get_section();
              osc_add_hook('header', array(&$this, 'enqueue_css'), 1);
              osc_add_hook('header', array(&$this, 'enqueue_js'));
          }

          function enqueue_css()
          {
              $location = Rewrite::newInstance()->get_location();
              $section = Rewrite::newInstance()->get_section();
              if ($location === 'user' && in_array($section, array('dashboard', 'profile', 'alerts', 'change_email', 'change_username', 'change_password', 'items'))) {
                  $user = User::newInstance()->findByPrimaryKey(Session::newInstance()->_get('userId'));
                  View::newInstance()->_exportVariableToView('user', $user);
                  ?>
                  <script type="text/javascript">
                      var cary_theme = window.cary_theme || {};
                      cary_theme.user = {};
                      cary_theme.user.id = '<?php echo osc_user_id(); ?>';
                      cary_theme.user.secret = '<?php echo osc_user_field("s_secret"); ?>';
                  </script>
                  <?php
              }
              // osc_enqueue_style('bootstrap', osc_current_web_theme_url() . 'lib/bootstrap/css/bootstrap.min.css');
              // customized bootstrap with 480px @media
              // https://gist.github.com/wdollar/135ec3c80faaf5a821b0
              osc_enqueue_style('bootstrap', osc_current_web_theme_url() . 'css/bootstrap.min.css');

              osc_enqueue_style('font-awesome', 'https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css');
              osc_enqueue_style('bootstrap-social', osc_current_web_theme_url() . 'css/bootstrap-social.css');
              osc_enqueue_style('bxslider-css', osc_current_web_theme_url() . 'lib/bxslider/css/jquery.bxslider.min.css');
              osc_enqueue_style('sweetalert-css', osc_current_web_theme_url() . 'js/sweetalert-master/dist/sweetalert.css');
              osc_enqueue_style('style', osc_current_web_theme_url() . 'css/style.css');
              osc_enqueue_style('style-jquery-ui', osc_current_web_theme_url() . 'lib/jquery-ui/jquery-ui.css');
              osc_enqueue_style('style-animatedModal', '//cdnjs.cloudflare.com/ajax/libs/animate.css/3.2.0/animate.min.css');
              if(Params::getParam('page') === 'item' &&
                  (Params::getParam('action')==='item_add' || Params::getParam('action')==='item_edit')) {
                  osc_enqueue_style('style-jquery-ui', osc_current_web_theme_url() . 'js/alt-checkbox/jquery.alt-checkbox.css');
              }
          }
          function enqueue_js()
          {
              osc_register_script('jquery', osc_current_web_theme_url() . 'lib/jquery/js/jquery-1.12.0.min.js');
              osc_enqueue_script('jquery');
              osc_register_script('jquery-ui', osc_current_web_theme_url() . 'lib/jquery-ui/jquery-ui.js', 'jquery');
              osc_enqueue_script('jquery-ui');
              osc_enqueue_script('php-date');
              osc_register_script('animatedModal', osc_current_web_theme_url() . 'js/animatedModal.js-master/animatedModal.min.js', 'jquery');
              osc_enqueue_script('animatedModal');
              osc_register_script('global-js', osc_current_web_theme_url() . 'js/global.js', 'jquery');
              osc_enqueue_script('global-js');
              osc_register_script('sticky', osc_current_web_theme_url() . 'node_modules/sticky-kit/dist/sticky-kit.js', 'jquery');
              osc_enqueue_script('sticky');
              osc_register_script('bootstrap-js', osc_current_web_theme_url() . 'lib/bootstrap/js/bootstrap.min.js', 'jquery');
              osc_enqueue_script('bootstrap-js');
              osc_register_script('bxslider-js', osc_current_web_theme_url() . 'lib/bxslider/js/jquery.bxslider.min.js', 'jquery');
              osc_enqueue_script('bxslider-js');
              $url = 'https://maps.googleapis.com/maps/api/js?libraries=places';
              if (trim(osc_get_preference('maps_key', 'cary_theme')) != '') {
                  $url = 'https://maps.googleapis.com/maps/api/js?key=' . trim(osc_get_preference('maps_key', 'cary_theme')) . '&libraries=places';
              }
              osc_register_script('gmaps-js', $url);
              osc_register_script('sweetalert-js', osc_current_web_theme_url() . 'js/sweetalert-master/dist/sweetalert.min.js');
              osc_enqueue_script('sweetalert-js');
              if (osc_is_ad_page() && osc_get_preference('include_maps_js', 'cary_theme')) {
                  osc_enqueue_script('gmaps-js');
              }
              osc_register_script('delete-user-js', osc_current_web_theme_js_url('delete_user.js'), 'jquery-ui');
              if (($this->location === 'user' &&
                      in_array($this->section, array('dashboard', 'profile', 'alerts', 'change_email', 'change_username', 'change_password', 'items')))
                  || (Params::getParam('page') === 'custom' && Params::getParam('in_user_menu') == true)
              ) {
                  osc_enqueue_script('delete-user-js');
              }
              if(Params::getParam('page') === 'item' &&
                  (Params::getParam('action')==='item_add' || Params::getParam('action')==='item_edit')) {
                  osc_register_script('alt-checkbox-js', osc_current_web_theme_url() . 'js/alt-checkbox/jquery.alt-checkbox.js');
                  osc_enqueue_script('alt-checkbox-js');
              }
          }
      }
       
    • By eduardarbal
      Não preciso mais.
    • By clecio10
      Olá pessoal sou novo no fórum e gostaria da ajuda de vocês na resolução de um exercício de estrutura de dados, não estou sabendo como implementar os métodos com base nas perguntas do exercício. Por favor, quem puder ajudar eu agradeço de coração!
       
      Enunciado:   1. Implemente o método compareTo(Object o) da classe Item ; 2. Implemente a lista duplamente encadeada para a atender a interface ILista ; 3. Implemente a lista simplesmente encadeada circular para a atender a interface ILista ; 4. Implemente a lista duplamente encadeada circular para a atender a interface ILista ;   interface ILista { /** * Adiciona um elemento na lista * * @param dado Elemento a ser adicionado * @throws ListaException Erro caso não tenha mais espaço disponível. */ void adicionar(Item dado) throws ListaException; /** * Remove um item da lista * * @param chave informar a chave de busca do item * @throws ListaException Erro caso não tenha o item informado. */ void remover(Comparable chave) throws ListaException; /** * Caso a chave seja encontrada, retorna verdadeiro * * @param chave * @return */ boolean contem(Comparable chave) throws ListaException; /** * Retorna a quantidade de elementos * * @return a quantidade de elementos */ int getQtd(); /** * Adiciona a outra lista no final da lista. * * @param outralista a outra lista a ser somada. */ void AdicionarNoFinal(ILista outralista) throws ListaException; /** * Adiciona a outra lista no final da lista. * * @param outralista a outra lista a ser somada. */ void AdicionarNoFinal(Item[] outralista) throws ListaException; /** * Adiciona a outra lista após o item chave existente na lista. * * @param outralista a outra lista a ser somada. * @param chaveDoItemDoMeio elemento chave que antecederá a outra lista */ void AdicionarNoMeio(Comparable chaveDoItemDoMeio, ILista outralista) throws ListaException; /** * Retorna outra lista com os elementos existentes da lista. * * @param posicaoInicial posição inicial da lista a ser copiada. * @param posicaoFinal posição final da lista que deve ser copiada. */ Item[] getSubLista(int posicaoInicial, int posicaoFinal) throws ListaException; /** * Retorna a quantidade de elementos que são iguais ao informado no parâmetro. * * @param item elemento de comparação. */ int getQtdElementos(Item item) throws ListaException; /** * Remove os itens duplicados * * @throws ListaException */ void removerDuplicados() throws ListaException; } public class Item implements Comparable { private Comparable chave; private Object informacaoCompleta; public Item() { } public Item(Comparable chave) { this(); this.chave = chave; this.informacaoCompleta = chave; } public Item(Comparable chave, Object dado) { this(chave); this.informacaoCompleta = dado; } public Object getInformacaoCompleta() { return informacaoCompleta; } public void setInformacaoCompleta(Object informacaoCompleta) { this.informacaoCompleta = informacaoCompleta; } public Comparable getChave() { return chave; } public void setChave(Comparable chave) { this.chave = chave; } // Implementar o método compareTo public int compareTo(Object o) { return 0; } } public class ListaException extends Exception { public ListaException(String msg) { super(msg); } }
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.