Получить список из веб-службы .net на Android

У меня есть веб-служба .net, и я хочу использовать ее на Android. Методы этой веб-службы возвращают список (из строки), и я не получил ответа на Android. Что я могу сделать ? Вот код..

Я работаю над этим в течение 3 дней, и я еще не нашел решения.

Короче говоря, мне нужен список из веб-службы .net и добавить элементы этого списка в счетчик. Пожалуйста помогите.

public class MainActivity extends Activity {

    private Spinner myspinner;
    private static final String METHOD_NAME = "Sektorler";  
    private static final String NAMESPACE = "http://tempuri.org/";  
    private static final String SOAP_ACTION = "http://tempuri.org/Sektorler";
    private static final String URL = "http://www.xxxxxxxxxx.com/webservice1.asmx";

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

        myspinner = (Spinner) findViewById(R.id.spinner1);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,R.layout.activity_main , SektorDoldur());
        myspinner.setAdapter(adapter);
    }


    private ArrayList<String> SektorDoldur() {

        ArrayList<String> sektorler = new ArrayList<String>();

        SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        envelope.dotNet = true;     
        envelope.setOutputSoapObject(request);
        HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
        androidHttpTransport.debug = true;

        try {

       androidHttpTransport.call(SOAP_ACTION, envelope);
       SoapObject response = (SoapObject) envelope.getResponse();

       if (response.hasProperty("String")) {

       if (response.getPropertyAsString("String") == null) {
    //do something
       } else {

           for(int i=0;i<response.getPropertyCount();i++){
//             sektorler.add(i, response.getPropertyAsString("String"));
               sektorler.add(response.getPropertyAsString(i));
           }
        }

}

        } catch (Exception e) {

            e.printStackTrace();

        }

        return sektorler;

    }

Также я пробую этот код, но он не работает.

public class MainActivity extends Activity {

    private Spinner myspinner;
    private static final String METHOD_NAME = "Sektorler";  
    private static final String NAMESPACE = "http://tempuri.org/";  
    private static final String SOAP_ACTION = "http://tempuri.org/Sektorler";
    private static final String URL = "http://www.xxxxxxxx.com/webservice1.asmx";
    private String[] denemeList;

    private String[] SektorDoldur(){
        SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        envelope.dotNet = true;     
        envelope.setOutputSoapObject(request);
        HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
        androidHttpTransport.debug = true;

        try {

       androidHttpTransport.call(SOAP_ACTION, envelope);
       SoapObject response = (SoapObject) envelope.bodyIn;
       denemeList = new String[response.getPropertyCount()];

       for(int i=0;i<response.getPropertyCount();i++){ 
           denemeList[i] = response.getPropertyAsString(i).toString();
       }      
} 
        catch (Exception e) {           
            e.printStackTrace();
        }
        return denemeList;      
    }


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

        SektorDoldur();

        myspinner = (Spinner) findViewById(R.id.spinner1);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,R.layout.activity_main , denemeList);
        myspinner.setAdapter(adapter);

    }

person Melih Mucuk    schedule 31.07.2012    source источник
comment
Возвращает ли ваш метод SektorDoldur() какие-либо данные?   -  person Akshay    schedule 31.07.2012
comment
мой веб-сервис работает хорошо. Поэтому метод SektorDoldur() должен возвращать данные, если этот код верен.   -  person Melih Mucuk    schedule 31.07.2012
comment
Укажите разрешение в файле манифеста для использования Интернета (например, android.permission.INTERNET). И посмотрите на этот пост sarangasl.blogspot.in/2011/10/   -  person Akshay    schedule 31.07.2012
comment
на самом деле запрос SoapObject = новый SoapObject(NAMESPACE, METHOD_NAME); Строка выдает ошибку, но я знаю, что NAMESPACE и METHOD_NAME верны. да, у моего файла манифеста есть разрешение на доступ в Интернет.   -  person Melih Mucuk    schedule 31.07.2012
comment
Я понял !! Я нахожу решение, и я не могу ответить на свои вопросы.   -  person Melih Mucuk    schedule 31.07.2012
comment
Хорошо, что здесь вы можете опубликовать свой ответ через определенное количество времени. :)   -  person Akshay    schedule 31.07.2012
comment
Спасибо за внимание :) Я опубликую свое решение. Это может быть полезно для кого-то   -  person Melih Mucuk    schedule 31.07.2012


Ответы (1)


Я понял!!

это неверно;

SoapObject response = (SoapObject) envelope.bodyIn;

Давайте посмотрим на этот код, это правда;

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

Наконец-то есть кое-какая хитрость.

  1. Прежде всего удалите файл jar ksoap2 из вашего проекта.
  2. Сохраните его и закройте Eclipse.
  3. Затем скопируйте файл jar ksoap2, перейдите в папку рабочей области.
  4. Откройте папку проекта, щелкните папку «libs» и вставьте ее.
  5. Снова откройте Eclipse и запустите проект!!

        private Spinner myspinner;
        private static final String METHOD_NAME = "Sektorler";  
        private static final String NAMESPACE = "http://tempuri.org";   
        private static final String SOAP_ACTION = "http://tempuri.org/Sektorler";
        private static final String URL = "http://www.xxxxxxxxxx.com/webservice1.asmx";
        private String[] denemeList;
    
        private void SektorDoldur(){
    
            SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
            SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
            envelope.dotNet = true;     
            envelope.setOutputSoapObject(request);
            HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
            androidHttpTransport.debug = true;
    
            try {
    
           androidHttpTransport.call(SOAP_ACTION, envelope);
           SoapObject response = (SoapObject) envelope.getResponse();
           denemeList = new String[response.getPropertyCount()];
    
          for(int i=0;i<response.getPropertyCount();i++){ 
    
               denemeList[i] = response.getPropertyAsString(i).toString();
    
          }      
    } 
            catch (Exception e) {           
                e.printStackTrace();
            }       
        }
    
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            SektorDoldur();
    
            myspinner = (Spinner) findViewById(R.id.spinner1);
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, denemeList);
            adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            myspinner.setAdapter(adapter);
    
        }
    
person Melih Mucuk    schedule 01.08.2012