2014-07-11 4 views
-2

// Итак ... я этот веб-сервис с подключением к базе данных. У меня есть два веб-метода: один // для поиска в базе данных и один для вставки. Я не знаю, подключен ли я к webservice // потому что мое приложение выходит, когда я нажимаю любую кнопку. Вы можете мне помочь, спасибо вам большое!Ошибка в моем приложении для Android.

package com.example.btn; 

//import android.support.v7.app.ActionBarActivity; 
import android.app.Activity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import org.ksoap2.SoapEnvelope; 
import org.ksoap2.serialization.SoapObject; 
import org.ksoap2.serialization.SoapSerializationEnvelope; 
import org.ksoap2.transport.HttpTransportSE; 
//import android.app.Activity; 
//import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
//import android.widget.TextView; 
import android.widget.Toast; 



public class MainActivity extends Activity { 

    private static String SOAP_ACTION1 = "http://localhost/CheckRecords"; 

    private static String SOAP_ACTION2 = "http://localhost/RecordData"; 

    private static String NAMESPACE = "http://localhost/"; 

    private static String METHOD_NAME1 = "CheckRecords"; 

    private static String METHOD_NAME2 = "RecordData"; 

    private static String URL = "http://http://192.168.100.176/WebS/Service1.asmx?wsdl"; 

    // Button btnCheck,btnRecord; 
    // EditText barcodein,denumirein; 


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

     Button btnCheck = (Button) findViewById(R.id.btnCheck); 
     Button btnRecord = (Button) findViewById(R.id.btnRecord); 
     final EditText barcodein = (EditText) findViewById(R.id.barcodein); 
     final EditText denumirein = (EditText) findViewById(R.id.denumirein); 

    btnCheck.setOnClickListener(new View.OnClickListener() 
    { 
       @Override 
       public void onClick(View v) 
       { 
        //Initialize soap request + add parameters 
       SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME1);  

       //Use this to add parameters 
       request.addProperty("newbarcode",barcodein.getText().toString()); 

       //Declare the version of the SOAP request 
       SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 

       envelope.setOutputSoapObject(request); 
       envelope.dotNet = true; 

       try { 
        HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); 

        //this is the actual part that will call the webservice 
        androidHttpTransport.call(SOAP_ACTION1,envelope); 

        // Get the SoapResult from the envelope body. 
        SoapObject result = (SoapObject)envelope.bodyIn; 

        if(result != null) 
        { 
          //Get the first property and change the label text 
          denumirein.setText(result.getProperty(0).toString()); 
        } 
        else 
        { 
          Toast.makeText(getApplicationContext(), "No data found",Toast.LENGTH_LONG).show(); 
        } 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
       } 
     }); 

    btnRecord.setOnClickListener(new View.OnClickListener() 

    { 

       @Override 
       public void onClick(View v) 

       { 
        //Initialize soap request + add parameters 
       SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME2);  

       //Use this to add parameters 
       request.addProperty("newbarcode",barcodein.getText().toString()); 

       //Declare the version of the SOAP request 
       SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 

       envelope.setOutputSoapObject(request); 

       envelope.dotNet = true; 

       try { 

        HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); 

        //this is the actual part that will call the webservice 

        androidHttpTransport.call(SOAP_ACTION2, envelope); 

          Toast.makeText(getApplicationContext(), "Inserted",Toast.LENGTH_LONG).show(); 


       } catch (Exception e) { 

        e.printStackTrace(); 

       } 

       } 

     }); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 
     if (id == R.id.action_settings) { 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 
} 
+0

http://stackoverflow.com/questions/23353173/unfortunately-myapp-has-stopped-how-can-i-solve-this – laalto

+0

вывесить LogCat пожалуйста – nobalG

+0

Вероятно, вы получите 'NetworkOnMainThreadException'. Обратите внимание на этот вопрос (http://stackoverflow.com/questions/6343166/android-os-networkonmainthreadexception). – SSS

ответ

0

У меня есть два WebMethods: один для поиска в базе данных и один для вставки. Я не знаю, подключен ли я к веб-сервису, потому что мое приложение выходит, когда Нажимаю любую кнопку.

=> Потому что вы пытаетесь сделать сетевой вызов непосредственно на основной поток пользовательского интерфейса. Чтобы решить эту проблему, вам необходимо реализовать AsyncTask.

И я бы попросил вас проверить вывод Logcat, который точно дает вам журнал ошибок/исключений.

+0

Я пробовал, но это не сработало. Я начинаю. Мне нужно переместить мой OnClickListener внутри asynctask? –

+0

Проверьте вывод 'logcat'. Не могу ничего сказать или предложить без него! –

Смежные вопросы