Android: (веб-сервисы) Как сохранить данные на удаленном сервере и извлечь их

#android #web-services

#Android #веб-сервисы

Вопрос:

У меня есть приложение для Android, которому требуется имя пользователя и пароль для входа. Мне нужно сохранить имя пользователя и пароль на удаленном сервере, введя данные на странице регистрации с отображением окна предупреждения Registered successfully . Когда пользователь откроет приложение в следующий раз, он войдет в систему. Я хочу использовать механизм клиент / сервер. После того, как я получу ответ, я хочу проанализировать его либо с помощью sax parser, либо с помощью soap. Я много искал в Google, но не нашел правильного примера. Поскольку я новичок в веб-сервисах, я не смог решить эту проблему. Пожалуйста, помогите мне.

 EditText input1 = (EditText) findViewById(R.id.usertext);
EditText input2 = (EditText) findViewById(R.id.Passtext);
String username = input1.getText().toString();
String password = input2.getText().toString();
  

Ответ №1:

 package com.google.android.Test;


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

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

public class myWebService extends Activity
{
         private static final String SOAP_ACTION = "HelloYou";
     private static final String METHOD_NAME = "getHello";
     private static final String NAMESPACE = "urn:HelloYou";
     private static final String URL = "http://localhost/lab/service.php";
     private Object resultRequestSOAP = null;

            @Override
            public void onCreate(Bundle icicle)
            {
                super.onCreate(icicle);
                TextView tv = new TextView(this);
                setContentView(tv);


            SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);


             //SoapObject
            request.addProperty("firstname", "John");
            request.addProperty("lastname", "Williams");
            SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
            envelope.setOutputSoapObject(request);


            HttpTransport androidHttpTransport = new HttpTransport(URL);
            try
            {
                androidHttpTransport.call(SOAP_ACTION, envelope);
                resultsRequestSOAP =  envelope.getResponse();
                String[] results = (String[])  resultsRequestSOAP;
                tv.setText( results[0]);
            }
            catch (Exception aE)
            {
                aE.printStackTrace ();;
            }
           }
}
  

Ответ №2:

Попробуйте этот код. Я успешно запускаю его на эмуляторе.

Я беру исходный код с некоторыми изменениями:http://egkatzioura.wordpress.com/2011/07/04/nusoap-and-ksoap2-android-and-php-alliance

Server.php

 <?php


// include NuSOAP library
    require_once('nusoap-0.9.5/lib/nusoap.php');



// Create Web Service Server
    $server = new nusoap_server;
    $server->configureWSDL('aritmatikawsdl', 'urn:aritmatikawsdl');





    $server->register('pollServer',
        array('value' => 'xsd:string'),
        array('return' => 'xsd:string'),
        'urn:aritmatikawsdl',
        'urn:aritmatikawsdl#pollServer',
    'rpc',
    'encoded',
    'Test'
        );



// Define Services


    function pollServer($value){

        if($value['value'] == 'Good'){

            return $value['value'].""."  The value of the server poll resulted in good information";
        }
        else{

            return $value['value'].""."  The value of the server poll showed poor information";
        }
    }


    $server->service($HTTP_RAW_POST_DATA);
?>
  

KSOAP2

 package org.tuxpan;





    import java.io.IOException;
    import org.ksoap2.SoapEnvelope;
    import org.ksoap2.serialization.SoapObject;
    import org.ksoap2.serialization.SoapSerializationEnvelope;
    import org.ksoap2.transport.HttpTransportSE;
    import org.xmlpull.v1.XmlPullParserException;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

    public class Adder extends Activity{


    private static final String SOAP_ACTION = "pollServer";
    private static final String METHOD_NAME = "pollServer";
    private static final String NAMESPACE = "http://10.0.2.2/DroidAssessment/server.php";
    private static final String URL = "http://10.0.2.2/DroidAssessment/server.php?wsdl";

    @Override
    public void onCreate(Bundle icicle)
    {
        super.onCreate(icicle);

    SoapObject soapclient = new SoapObject(NAMESPACE,METHOD_NAME);
    //Yes you need this one in order to send the whole string or else only the first letter
    //is going to be send
    SoapObject parameters = new SoapObject(NAMESPACE, METHOD_NAME);
    parameters.addProperty("value","Good");
    soapclient.addProperty(METHOD_NAME,parameters);

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    envelope.setOutputSoapObject(soapclient);
    HttpTransportSE httpTransportSE = new HttpTransportSE(URL);

    try {
    httpTransportSE.call(SOAP_ACTION, envelope);

    Log.v("TEST","runs ok attributes "  envelope.getResponse().toString());

    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    Log.v("TEST","io wrong");
    } catch (XmlPullParserException e) {
    Log.v("TEST","xml wrong");
    // TODO Auto-generated catch block
    e.printStackTrace();
    }

    }

    }