5

こんにちは、配列リスト データを SOAP Web サービスに渡す必要があります。これまでのところ、次のコードがあります。

    public class ResultActivity extends Activity {
    public final String NAMESPACE = "";
    public final String URL = "";
    public final String SOAP_ACTION_1 = "";
    public final String METHOD_NAME_1 = "";

    ProgressDialog mProgressDialog;
    SoapObject mSoapObjectCompanyDetailResponse;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.result);

        System.out.println("Size In resxusr " + OnLineApplication.mParserResults.size());
        for (int i = 0; i < OnLineApplication.mParserResults.size(); i++) {

            System.out.println("ID " + OnLineApplication.mParserResults.get(i).getCompanyId());
            System.out.println("Q " + OnLineApplication.mParserResults.get(i).getQuestion());
            System.out.println("A " + OnLineApplication.mParserResults.get(i).getAnswer());
        }

        new insertResult().execute();
    }

    public class insertResult extends AsyncTask<Void, Void, Void> {

        @Override
        protected void onPreExecute() {
            // TODO Auto-generated method stub
            super.onPreExecute();
            mProgressDialog = ProgressDialog.show(ResultActivity.this, "Wait", "Fetching");
        }

        @Override
        protected Void doInBackground(Void... params) {
            SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME_1);
            // request.addProperty("dt","");
            for (int i = 0; i < OnLineApplication.mParserResults.size(); i++) {
                request.addProperty("CompanyID", 30);
                request.addProperty("Question", OnLineApplication.mParserResults.get(i).getQuestion());
                request.addProperty("Answer", OnLineApplication.mParserResults.get(i).getAnswer());
            }

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

            try {
                androidHttpTransport.call(SOAP_ACTION_1, envelope);
                mSoapObjectCompanyDetailResponse = (SoapObject) envelope.bodyIn;
                Object re = null;
                re = envelope.getResponse();

                Log.i("myApp", mSoapObjectCompanyDetailResponse.toString());
                System.out.println("re " + mSoapObjectCompanyDetailResponse.toString());
                // mStringCompanyID=re.toString();

            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            // TODO Auto-generated method stub
            super.onPostExecute(result);
            if (mProgressDialog != null) {
                mProgressDialog.dismiss();
            }

        }

    }

}

私のXML WSDLサービスは次のとおりです。

    <wsdl:types>
    <s:element name="insertResultUser">
    <s:complexType>
       <s:sequence>
        <s:element minOccurs="0" maxOccurs="1" name="dt">
       <s:complexType>
         <s:sequence>
        <s:any minOccurs="0" maxOccurs="unbounded" namespace="http://www.w3.org/2001/XMLSchema" processContents="lax"/>
           <s:any minOccurs="1" namespace="urn:schemas-microsoft-com:xml-diffgram-v1" processContents="lax"/>
                    </s:sequence>
                </s:complexType>
               </s:element>
                </s:sequence>
             </s:complexType>
               </s:element>
              <s:element name="insertResultUserResponse">
             <s:complexType>
            <s:sequence>
             <s:element minOccurs="0" maxOccurs="1" name="insertResultUserResult" type="s:string"/>
            </s:sequence>
         </s:complexType>
        </s:element>
     </s:schema>
      </wsdl:types>
      <wsdl:portType>
     <wsdl:operation name="insertResultUser">
     <wsdl:input message="tns:insertResultUserSoapIn"/>
       <wsdl:output message="tns:insertResultUserSoapOut"/>
        </wsdl:operation>
        </wsdl:portType>

次のデータ構造は、上記のように Web サービスに渡す必要があるものです。

dt=anyType{DocumentElement=anyType{questions=anyType{CompanyID=1; Question=what is  android?; Answer=OS; };

 questions=anyType{CompanyID=1; Question=what is android?; Answer=OS; }; 
 questions=anyType{CompanyID=1; Question=what is android?; Answer=OS; };
 questions=anyType{CompanyID=1; Question=what is android?; Answer=OS; };
  questions=anyType{CompanyID=1; Question=what is android?; Answer=OS; }; }; }; }; }

上記のコードを実行すると、Arraylist データをサーバーにポストできません。onCreate メソッドで、Arraylist 値を出力できます。どうすればこれを解決できますか?

4

1 に答える 1