Soap: Header … проблемы

У меня есть проблемы с App в Вебе Service, который был потрачен exitosamente. Деталь пошла, когда я присоединяюсь безопасность в Веб Service, для этого он добавился header.

Тот, кто может ориентировать меня каков, мог бы быть деталью? Как кажется, я получаю ответ Веба Service!

Мой asyntask:

public class WSLogin extends AsyncTask<String,String,String> {

//Aqui van mis variables string Namespacer etc etc etc///

    String z = "";
    Boolean isSuccess = false;
    String user = edtuserid.getText().toString();
    String pass = edtpass.getText().toString();

    @Override
    protected void onPreExecute() {
        pbbar.setVisibility(View.VISIBLE);
    }

    @Override
    protected void onPostExecute(String r) {
        pbbar.setVisibility(View.GONE);
        Toast.makeText(Login.this,r,Toast.LENGTH_SHORT).show();
        if(isSuccess) {
            Intent i = new Intent(Login.this,LibroCampo.class);
            startActivity(i);
            finish();
        }
    }

    @Override
    protected String doInBackground(String... params) {

        SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME2);

        request.addProperty("sID", user);

        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

        Element[] headvalues = new Element[1];
        headvalues[0] = new Element().createElement(NAMESPACE, tagCredecial);

        Element tagUser = new Element().createElement(null, tagUSER);
        tagUser.addChild(Node.TEXT, valUSER);
        headvalues[0].addChild(Node.ELEMENT, tagUser);

        Element tagPass = new Element().createElement(null, tagPASS);
        tagPass.addChild(Node.TEXT, valPASS);
        headvalues[0].addChild(Node.ELEMENT, tagPass);

        envelope.headerOut = headvalues;
        envelope.setOutputSoapObject(request);

        envelope.dotNet = true;

        HttpTransportSE transporte = new HttpTransportSE(URL);
        transporte.debug = true;


        if(user.trim().equals("") || pass.trim().equals("")) {
            z = "Usuario o Contraseña vacios";
        } else {
            try {
                transporte.call(SOAP_ACTION2, envelope);
                SoapObject result = (SoapObject)envelope.getResponse();

                if ( user.equals(result.getProperty(0).toString()) &&  pass.equals(result.getProperty(2).toString())) {
                    z = "Bienvenido " + result.getProperty(1);
                    isSuccess=true;
                    SQLiteDatabase db = openOrCreateDatabase("SAICoffeeSQL", MODE_PRIVATE, null);
                    db.delete("tb_user_local",null, null);
                    ContentValues sEmp = new ContentValues();
                    sEmp.put("sIdUsuario", result.getProperty(0).toString());
                    sEmp.put("sUsuario", result.getProperty(1).toString());
                    sEmp.put("sPw", result.getProperty(2).toString());
                    sEmp.put("sIdAlmacen", Integer.valueOf(result.getProperty(3).toString()));
                    sEmp.put("bVerTodos", Boolean.valueOf(result.getProperty(4).toString()));
                    sEmp.put("bStatus", Boolean.valueOf(result.getProperty(5).toString()));
                    db.insert("tb_user_local",null, sEmp);
                }else{
                    z = "Acceso denegado";
                    isSuccess=false;
                }
            } catch (Exception e) {
                isSuccess = false;
                z = "Acceso denegado" + e;
                Log.i("", "" + e);
            }
        }
        return z;
    }
}

Ошибка, которую нужно помечать:

SoapFault - faultcode: 'soap:Server' faultstring: 'El servidor no puede procesar la solicitud. ---> El mensaje de entrada no cumple el requisito R1012 de Simple SOAP Binding Profile 1.0.: UN MENSAJE DEBE serializar el sobre con codificación de caracteres UTF-8 o UTF-16.' faultactor: 'null' detail: org.kxml2.kdom.Node@6c112e8
2
задан 21.06.2016, 19:24
2 ответа

Хороший друзья часы спустя и в дни давания мне верхам раствора она была такой простой, что лучше как они говорят здесь в моем народе, плакать - хорошо..., но там они идет ответ:

Проблема коренилась, в котором в объекте SoapSerializationEnvelope не aГ±adia charset UTF-8, и я помещаю им раствор, я помог для ним в его проектах и apliaciones, вовремя хорошая:

  1. Прежде всего dependicia Ksoap2-android-assambly-3.4.0-jar-whith-dependencies, - та, которая я функционировала, так как он использовал предыдущую версию, которая не допускала в функции выбор, который он желал; спокойные я объясню в следующих точках, как строить правильно объекты и как наполнять правильно функцию.
  2. , Если они видят этот ответ уже, поняли как строить или вооружать объект SoapSerializationEnvelope, который берется за то, чтобы создавать структуру просьбы и класса, который берется за то, чтобы создавать это, с его соответствующими выборами конфигурации:

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope (SoapEnvelope. VER11); envelope.setOutputSoapObject (request); envelope.implicitTypes = true; envelope.setAddAdornments (false); envelope.dotNet = true; envelope.headerOut = header;

  3. Кроме этой структуры aГ±aden другая стоимость, которую идентифицирует тип documeto, метод отправления, CHARTSET (это этот параметр, который произошел несколько головных болей), теоретически (desconosco много android, я едва провожу два месяца развивая в этой платформе) классы (родители и дети), который берется за это, я помещаю тому код:

    HttpTransportSE transport = new HttpTransportSE (URL);

  4. Даже эта точка все функционировало правильно, эта часть опциональная (по крайней мере, если ты манипулируешь большей безопасностью во время делания просьб в Веб Service) в моем случае не, aГ±ado следующий код и параметр, которого мне не хватает aГ±adir:

    List headerPropertieList = new ArrayList (); headerPropertieList.add (new HeaderProperty ("Content-Type", "text/xml; charset=utf-8"));

  5. , чтобы потом использовать в методе Call объекта HttpTransportSE, и он остается следующего способа:

    transporte.call (SOAP_ACTION, envelope, headerPropertieList);///весь его код или методы или классы в конце концов совсем то, что приходит в голову им :D

  6. , И Я Предоставляю все оно функционирует (по крайней мере для моего exitosamente).

Надеялся, что помогает не все, но мы находимся в процессе обучения это был мой опыт

1
ответ дан 24.11.2019, 14:06

Согласно твоему сообщению ошибки:

Сообщение входа не выполняет обязательное условие R1012 Простого SOAP Биндинг Профиле 1.0.: СООБЩЕНИЕ ДОЛЖНО serializar на с codificaciГіn характеров UTF-8 или UTF-16. '

добавляет собственность encodingStyle = "UTF-8" к твоему request:

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.encodingStyle = "UTF-8";
0
ответ дан 24.11.2019, 14:06
  • 1
    спасибо за ответ, уже я попытался продолжает выходить та же ошибка.... – Mark Dev 21.06.2016, 19:54
  • 2
    ты попытался используя encoding UTF-16? – Jorgesys♦ 21.06.2016, 20:13
  • 3
    если.....: S..... у меня есть порыв, который может быть Вебом service, что не обрабатывает правильно получение данных в teroria, я создаю правильно elements – Mark Dev 21.06.2016, 20:18
  • 4
    там я ушла " R" – Mark Dev 21.06.2016, 20:32
  • 5
    уже я нашел ошибку: в просьбе объект SoapSeerializationEnvelope не добавляет этикетку, которая идентифицирует просьбу как XML – Mark Dev 22.06.2016, 19:10