Разработка программы Android для связи с веб-сервисами Epicor 9

Это... Я пытаюсь получить запрос данных от веб-службы epicor с помощью приложения Android(в Eclipse) и библиотеки KSOAP2. Это мои коды:

public class MainActivity extends Activity {

    //.........PART CONNECTION LINK............
    private static final String SOAP_ACTION = "http://10.2.15.60/epicortrainservices/epicortrainservices/";
    private static final String METHOD_NAME = "GetAllRows";
    private static final String NAMESPACE = "http://10.2.15.60/epicortrainservices/";
    private static final String URL = "http://10.2.15.60/epicortrainservices/POApvMsgService.asmx?wsdl";
    private TextView tv;

    private String response;

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

        tv= (TextView)findViewById(R.id.textView1);

        myAsyncTask myRequest = new myAsyncTask();
        myRequest.execute();

    }

    private class myAsyncTask extends AsyncTask<Void, Void, Void>    {



        @Override
        protected void onProgressUpdate(Void... values) {
            Log.i("TOPSCORE", "onProgressUpdate");
        }

        @Override
        protected void onPostExecute(Void result) {
            super.onPostExecute(result);
            tv.setText(response);
        }

        @Override
        protected void onPreExecute() {
            super.onPreExecute();       
        }

        @Override
        protected Void doInBackground(Void... arg0) {

   //.........PART ENCAPSULATE SOAP............
            SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);

            PropertyInfo CompanyID = new PropertyInfo();
                    //Set Name
                CompanyID.setName("CompanyID");
                    //Set Value
                CompanyID.setValue("EPIC06");
                    //Set dataType
                CompanyID.setType(String.class);

            PropertyInfo whereClausePOApvMsg = new PropertyInfo();
                    //Set Name
                whereClausePOApvMsg.setName("whereClausePOApvMsg");
                    //Set Value
                whereClausePOApvMsg.setValue("");
                    //Set dataType
                whereClausePOApvMsg.setType(String.class);



            PropertyInfo pageSize = new PropertyInfo();
                    //Set Name
                pageSize.setName("pageSize");
                    //Set Value
                pageSize.setValue("5");
                    //Set dataType
                pageSize.setType(int.class);


            PropertyInfo absolutePage = new PropertyInfo();
                        //Set Name
                absolutePage.setName("absolutePage");
                        //Set Value
                absolutePage.setValue("5");
                        //Set dataType
                absolutePage.setType(int.class);





            request.addProperty(CompanyID);                     
            request.addProperty(whereClausePOApvMsg); 
            request.addProperty(pageSize);
            request.addProperty(absolutePage);


            SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
            envelope.setOutputSoapObject(request);  
            envelope.dotNet=true;

            HttpTransportSE httpTransport = new HttpTransportSE(URL);

            httpTransport.setXmlVersionTag("<!--?xml version=\"1.0\" encoding= \"UTF-8\" ?-->");

            httpTransport.debug = true;  
            try {
                httpTransport.call(SOAP_ACTION, envelope);
            } catch (HttpResponseException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (XmlPullParserException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } //send request
       //.........PART GET RESPONSE............
            SoapObject result = null;
            try {
                SoapObject resultString=(SoapObject) envelope.bodyIn;
                result = (SoapObject)resultString.getProperty(0);
            } catch (SoapFault e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } 
            //response contain the data request...
            response = result.toString();
            return null;
        }   
    }   
} 

Это... xml коды, показывающие параметры метода "GetAllRows" из wsdl Epicor WebService:

<xs:element name="GetAllRows">
  <xs:complexType>
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="CompanyID" type="xs:string"/>
      <xs:element minOccurs="0" maxOccurs="1" name="whereClausePOApvMsg" type="xs:string"/>
      <xs:element minOccurs="1" maxOccurs="1" name="pageSize" type="xs:int"/>
      <xs:element minOccurs="1" maxOccurs="1" name="absolutePage" type="xs:int"/>
      <xs:element minOccurs="0" maxOccurs="1" name="callContextIn" type="vantageSchema:CallContextDataSetType"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

Мои проблемы:

  1. Я не знаю правильную ссылку (SOAP_ACTION) на веб-сервис epicor

  2. Веб-сервису Epicor нужны "пользователь" и "пароль" каждый раз, когда я вызываю метод. Где я должен добавить это (в request.addProperty?) В коды?

  3. Это верно, коды деталей для получения ответа на данные?

0 ответов

Другие вопросы по тегам