Java/Android/WebService

Galera, boa tarde!
É o seguinte, criei um WebService bem simples, que soma dois números e retorna o resultado em Java (no Netbeans).
Trecho do meu código do WS:

@WebMethod(operationName = "add") public int add(@WebParam(name = "num1") int num1, @WebParam(name = "num2") int num2) { int resultado = num1 + num2; return resultado;

Aí criei uma aplicação pra Android no Eclipse, onde o usuário digita os dois números que deseja somar. Ao clicar no botão “soma”, a aplicação teria que chamar o WS e retornar o valor da soma num edittext no emulador. Mas, infelizmente, estou com um problema e não consigo chamar o WS na aplicação Android.
Estou usando a biblioteca ksoap2.
Trecho da Activity:

[code]private static String SOAP_ACTION = “http://calculator.me.org/add”;
private static String NAMESPACE = “http://calculator.me.org/CalculatorWS”;
private static String METHOD_NAME= “add”;
private static String URL = “http://localhost:8080/CalculatorWSApplication/CalculatorWS?wsdl”;

Button btSomar;
EditText etNum1, etNum2, etResultado;
double num1, num2 , resultado;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_test_main);
    
    etNum1 = (EditText) findViewById(R.calculo.numero1); 
    etNum2 = (EditText) findViewById(R.calculo.numero2);
    etResultado = (EditText) findViewById(R.calculo.resultado);
    btSomar = (Button) findViewById(R.botao.btSoma);
    
    btSomar.setOnClickListener(new View.OnClickListener() 
    {   
        @Override
    public void onClick(View v) 
    {               
            SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);   
            SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);                                             
        
            request.addProperty("num1", num1 = Double.parseDouble(etNum1.getText().toString()));
            request.addProperty("num2", num2 = Double.parseDouble(etNum2.getText().toString()));
            
            envelope.setOutputSoapObject(request);
            envelope.dotNet = false;
                                        
                             try {  
                 HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);                
                     androidHttpTransport.call(SOAP_ACTION, envelope);
                SoapObject result = (SoapObject)envelope.bodyIn;
                etResultado.setText(String.valueOf(resultado));
                                                                    
                            } catch (Exception e) {
                e.printStackTrace();
                            }
                    
        }         
        });
    }

}[/code]

Alguém poderia me ajudar com essa dúvida?
Desde já, agradeço!

Olá RobertaPS creio que seria mais facil vc criar uma classe responsavel pelo webservice:


public class WebService {
    private static final int TIMEOUT_CONEXAO = 20000; // 20 segundos
    private static final int TIMEOUT_SOCKET = 30000; // 30 segundos
    private static final int TAM_MAX_BUFFER = 2048; // 10Kbytes
    private String url;
 
    
    public WebService(String url) {
        this.url = "http://urldowebservice/webservice";
    }


  public String getSumNumber(String num1,String num2){
        
  String parserbuilder = "";
        try{
            HttpParams httpParameters = new BasicHttpParams();
            
            // Configura o timeout da conexão em milisegundos até que a conexão
            // seja estabelecida
            HttpConnectionParams.setConnectionTimeout(httpParameters, TIMEOUT_CONEXAO);
            
            // Configura o timeout do socket em milisegundos do tempo 
            // que será utilizado para aguardar os dados
            HttpConnectionParams.setSoTimeout(httpParameters, TIMEOUT_SOCKET);   
            
            HttpClient httpclient = new DefaultHttpClient(httpParameters);
            HttpPost httppost = new HttpPost(url + "?num1="+num1+"&num2="+num2);
    
            HttpResponse response = httpclient.execute(httppost);
            
                       
            BufferedReader reader = new BufferedReader(
                    new InputStreamReader(response.getEntity().getContent(), "UTF-8"), TAM_MAX_BUFFER);
            
            StringBuilder builder = new StringBuilder();
            
            for (String line = null ; (line = reader.readLine())!= null;) {
                builder.append(line).append("\n");
            }
            
            parserbuilder = builder.toString();
            
                    
        }catch(ClientProtocolException e){
            Log.e("SISTEMA", "Erro no Webservice: " + e.toString());
        }
        catch(IOException e){
            Log.e("SISTEMA", "Erro no Webservice: " + e.toString());
        }
        Log.i("SISTEMA", "WEBSERVICE OK ");
        return parserbuilder;    
    }

e em sua Activity

@Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_test_main);  
          
        etNum1 = (EditText) findViewById(R.calculo.numero1);   
        etNum2 = (EditText) findViewById(R.calculo.numero2);  
        etResultado = (EditText) findViewById(R.calculo.resultado);  
        btSomar = (Button) findViewById(R.botao.btSoma);  
          
        btSomar.setOnClickListener(new View.OnClickListener()   
        {     
            @Override  
        public void onClick(View v)   
        {                 
                //caso queira passar a url do ws
                WebService webService = new WebService("http://urldowebservice/webservice");
	        String resultado = webService.getSumNumber(etNum1.getText().toString(),etNum2.getText().toString());

//ai é so pegar o resultado 
        }  

});
}  

com isso ele vai ler as linhas e retornar o resultado do seu webserive!
vc pode customizar como quiser o envio e o resultado fica mais claro acho :smiley:

Obrigada fabiobrotas , vou tentar fazer do jeito que você me falou… Se caso não conseguir volto aqui!
Só uma dúvida, nesse exemplo que me passou, não utiliza SOAP né?

Não não como vc mesmo especificou que é algo simples somente retornar a soma dos numeros pq utilizar SOAP?! ;D

Criei essa aplicação simples, utilizando SOAP, pra entender como funciona isso certinho, porque na verdade, estou apenas estudando ainda, no meu TCC terei que criar uma aplicação um pouco mais complexa de transferência de arquivos, utilizando SOAP. :stuck_out_tongue:

Neste caso de arquivo esse topico pode ajuda-la:

http://www.guj.com.br/java/142149-receber-arquivo-do-web-service

Obrigada fabiobrotas :smiley: