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 vmmh
      Alguma alma caridosa que me possa ajudar ?
      há dias que ando com este problema e não consigo resolver. Ficaria eternamente grato se alguém pudesse ajudar
       
      o codigo abaixo em localhost funciona na perfeição , mas em produção , no lado do servidor , nada... HTTP error 500.
      o pedido que estou a fazer está noutro dominio com porta 81 e no meu dominio uso certificado de segurança. Será por aí?
      de qualquer forma o wsdl está   aqui:
       
       
      $client = new SoapClient('https://dekrainspecoes.pt/acp/PROD_CustomUI_ACP_Member_Validation_WS.WSDL');
      $result = $client->QueryByNumCartao(array('N_Cartao' => "705684011673122085"));
      if (!empty($result->QueryByNumCartao_Output->Cartao_Ativo)) {
       
          echo 'The userId : '.$result->QueryByNumCartao_Output ->Pessoa_ID;
      }
       
      $JSON = json_encode($result);
    • By Alisson Hoepers
      Olá pessoal! Para mostrar a lista de um cadastro no meu sistema, eu populo a consulta em um DTO conforme abaixo. Minha pergunta é: Existe uma forma mais simples de popular a consulta na lista do DTO de forma mais simples?
       
      public List<ObjetoDTO> find(Query query) {     @SuppressWarnings("unchecked") List<Object[]> queryResult = query.getResultList(); List<ObjetoDTO> list = new ArrayList<>(); if (queryResult.isEmpty() == false) { for (Object[] item : queryResult) { ObjetoDTO dto = new ObjetoDTO(); dto.setId((Integer) item[0]); dto.setTitulo((String) (item[1])); dto.setDescricao((String) (item[2])); list.add(dto); } } return list; }  
    • By NaPraia
      Beleza pessoal?
       
      seguinte, tenho que desenvolver uma aplicação Java para me comunicar com outro sistema, via Adapter.
      Qual é a melhor forma de fazer isso?
       
      Eu comecei a desenvolver no Eclipse, porém, quando abri o projeto, não coloquei nem com opção de Webservice nem de Maven
       
      E outra dúvida, se instala o Java em servidor? um cara falou isso aqui mas não sei se está zuando.
    • By Luiz Henrique de Sousa
      Estou utilizando rich faces e seu componente JQuery, para realizar formatação de campos decimais, estou utilizando o maskMoney e atribui uma precisão de 3 casas no meu input text, e tenho um campo disabled que é booleano, ele é acionado caso tenha mais coisas associadas a outro item no form abaixo, mesmo sabendo que a função disabled é apenas vísivel ela não faz nada de diferente, quando a minha função disabled é acionada tem como eu tirar as casas decimais dela.
      Fiz dessa forma abaixo:
       
      <f:facet name="header"> <h:outputLabel value="#{messages.conversion}"/> </f:facet> <h:inputText id="fldConversion" value="#{row.vlConversion}" label="#{messages.conversion}" maxLength="25" disabled="#{defaultMBean.canDisabledConversion(row)}"> <a4j:ajax event="change" immediate="true" render="@all, partnerItem, dataModel"/> <f:converter converterId="javax.faces.BigDecimal"/> <f:validateLength maximum="30" /> </h:outputText> <rich:jQuery selector="#fldConversion" query="maskMoney({decimal:''.'',allowNegative:false, showSymbol:false, thousands: '''',precision: 3})"/> E criei esse método para quando estiver desativado o campo:
       
      public BigDecimal canDisableConversionE(TypeDTO row) { BigDecimal r = row.getConversionValue().setScale(0, RoundingMode.HALF_EVEN); System.out.println(r); return r; } public Boolean canDisableConversion(TypeDTO row) { if (row.getId() == 1L && !canDisableConversionE()) { return false; } if (IsWeight(row.getId())) { return true; } return getConfigFacade().canDisableConversionE(row.getConversionValue()); }  
    • By NaPraia
      Olá, estou tentando gerar um arquivo em PDF, mas ele já está dando erro na primeira linha, no comando de import
       
      import com.itextpdf.text.Document; import com.itextpdf.text.Paragraph; import com.itextpdf.text.pdf.PdfPCell; import com.itextpdf.text.pdf.PdfPTable; import com.itextpdf.text.pdf.PdfWriter;     public class Arquivo2704 {                 public static void main (String[] args) {                               Document document = new Document();               try {                     PdfWriter.getInstance(document, new FileOutputStream("C:\\a1.pdf"));                     document.open();                     document.add(new Paragraph("Hello World"));                 }                  catch(DocumentException de) {                     System.err.println(de.getMessage());                 }                  catch(IOException ioe) {                     System.err.println(ioe.getMessage());                 }                  //document.close();    } }
      Alguém pode me ajudar?
      obrigado            
×

Important Information

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