Проблема с созданием правильного запроса для SoapWS в Android - PullRequest
0 голосов
/ 10 октября 2018

У меня проблемы с созданием правильного запроса на SOAP WS от Android с использованием ksoap2-android и устройства Android v7.0.Я подключаюсь к услуге, но в ответе говорится, что в запросе нет данных.Я использовал SoapUI для проверки запроса и ответа, и он работал без проблем.Вот запрос, который я использую в SoapUI (некоторые данные опущены из-за NDA):

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:bus="http://path/to/file/busWS.wsdl">
   <soapenv:Header/>
   <soapenv:Body>
      <bus:synchronizeTime>
         <synchronizeTimeRequest>
            <bus-terminal>
               <BusCode>1</BusCode>
               <TerminalCode>1</TerminalCode>
               <CompanyCode>1</CompanyCode>
               <BusID>1</BusID>
               <TerminalID>1</TerminalID>
               <CompanyID>1</CompanyID>
               <VersionCode>1</VersionCode>
               <FilesVersion>1</FilesVersion>
               <NSerie>1</NSerie>
               <Signal>1</Signal>
               <Downloaded>1</Downloaded>
               <ProtocolVersion>1</ProtocolVersion>               
            </bus-terminal>
         </synchronizeTimeRequest>
      </bus:synchronizeTime>
   </soapenv:Body>
</soapenv:Envelope>

И это также ответ в SoapUI:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:bus="http://path/to/file/busWS.wsdl">
   <SOAP-ENV:Header/>
   <SOAP-ENV:Body>
      <bus:synchronizeTimeResponse>
         <Time>20181010114431</Time>
         <bus-result>
            <Code>0</Code>
            <Message/>
         </bus-result>
      </bus:synchronizeTimeResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Кодв Android:

class TareaWSConsulta extends AsyncTask<String,Integer,Boolean> {

        private String resultString;
        @Override
        protected Boolean doInBackground(String... strings) {
            boolean resul = true;
            SoapObject busTerminal = new SoapObject(NAMESPACE,"busterminal");

            PropertyInfo busCode = new PropertyInfo();
            busCode.setName("BusCode");
            busCode.setValue("1");
            busCode.setType(String.class);
            busTerminal.addProperty(busCode);

            SoapObject example = new SoapObject(NAMESPACE,METHOD_NAME);
            example.addProperty(busCode);
            SoapSerializationEnvelope env = new SoapSerializationEnvelope(SoapEnvelope.VER11);
            env.setOutputSoapObject(example);


            HttpTransportSE httpTransport = new HttpTransportSE(URL);

            try {
                httpTransport.debug = true;
                httpTransport.call(SOAP_ACTION,env);
                Object result = env.getResponse();
                if (result == null){
                    Log.i(TAG,"Respuesta nula: ");
                }else {
                    Log.i(TAG, "Respuesta: " + result.toString());

                    Vector response = (Vector) result;
                    for (int i = 0 ; i < response.size() ; i++){
                        Log.i(TAG, "Respuesta: " + response.elementAt(i).toString());
                    }

                    SoapObject(NAMESPACE,"synchronizeTimeResponse");                    
                    Log.i(TAG, "Respuesta: " + resultString);
                }

            } catch (IOException e) {
                e.printStackTrace();
            } catch (XmlPullParserException e) {
                e.printStackTrace();
            }
            return resul;
        }

Войдите в службу (работает в данный момент локально, проверено также в удаленном режиме):

"-----------------Terminal-------------------" 
"TerminalCode:, TerminalID:" 
"BusCode:, BusID:" 
"CompanyCode:, CompanyID:" 
"VersionCode:, NSerie:" 
"Signal:, Downloaded:" 
"ProtocolVersion:, FilesVersion:" 

Если код работал правильно, журнал должен отображатьЗначение BusCode, но оно пустое.Остальные параметры закодированы, но я их опускаю, так как я с ними согласен.Есть идеи, что я делаю не так?

...