2

こんにちは、私はかなり長い間 ksoap を使用してきましたが、この間ずっと複雑なオブジェクトの配列を受け取っていました。今、送信する必要があるものを 1 週間試していますが、管理できません。私の推測では、複雑なオブジェクトがサーバー側で正しくマッピングされていません。送信しているメッセージをパケット スニファーでキャッチしました。名前空間とマッピングに何か問題があると思います。これまでに行ったことを投稿させてください。 .Web サービスは wcf なので、wcftestclient からの SOAP メッセージと、Android アプリケーションから送信しているものも投稿します。

public class MainActivity extends Activity {

private Button btn;
private Button btn1;


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

    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
    StrictMode.setThreadPolicy(policy);

    btn=(Button) findViewById(R.id.button1);
    btn.setOnClickListener(new OnClickListener() {            
        public void onClick(View v) { 

            SoapObject soapObjectRequest = new SoapObject("http://microsoft.com/webservices/","InsertStudentAbsences");

            SRV_Students_Absence objStudentAbsences = new SRV_Students_Absence();

            PropertyInfo propertyInfo = new PropertyInfo();             
            propertyInfo.setName("objStudentAbsences");
            propertyInfo.setType(SRV_Students_Absence.class);
            propertyInfo.setValue(objStudentAbsences);




            PropertyInfo propertyInfo1 = new PropertyInfo();                
            propertyInfo1.setName("connString");
            propertyInfo1.setType(String.class);
            propertyInfo1.setValue("server=verl,1524;Database=olDB;UID=sa;Password=7Esta#KAz");







            soapObjectRequest.addProperty(propertyInfo1);
            soapObjectRequest.addProperty(propertyInfo);
            soapObjectRequest.addProperty("Company","8");
            soapObjectRequest.addProperty("Lng","00");
            soapObjectRequest.addProperty("MainPeriod","80");
            soapObjectRequest.addProperty("UserID","14453");
            soapObjectRequest.addProperty("CourseDate","2012-11-06");

            SoapSerializationEnvelope soapSerializationEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
            soapSerializationEnvelope.dotNet = true;
            soapSerializationEnvelope.implicitTypes = true;             


            soapSerializationEnvelope.setOutputSoapObject(soapObjectRequest);


            soapSerializationEnvelope.addMapping(soapObjectRequest.getNamespace(), "SRV_Students_Absence", objStudentAbsences.getClass());
            //soapSerializationEnvelope.addMapping(soapObjectRequest.getNamespace(), "SRV_Absence_Category", SRV_Absence_Category.class);
 //soapSerializationEnvelope.addMapping("http://schemas.datacontract.org/2004/07/WcfService_StudentGrades", "SRV_Student", SRV_Student.class);


            try {
                /**
                 * Mail the letter.
                 */
                HttpTransportSE httpTransportSE = new HttpTransportSE("http://androidwcf.schoolportal.gr");             
                httpTransportSE.call("http://microsoft.com/webservices/"+"IVertiSchool_SRV/InsertStudentAbsences", soapSerializationEnvelope);

                httpTransportSE.debug=true;



                SoapObject soapObjectResponse = (SoapObject)soapSerializationEnvelope.getResponse();





            } catch (Exception exception) {
                exception.printStackTrace();


            }




        }
    });

}

これは、KvmSerializable を実装するクラスです。

public class SRV_Students_Absence implements KvmSerializable {

private int AbCode;
private String AbNum;
private int AbsCatID;
private String ActID;
private String Cause;
private int  ClCode;
private int CoCode;
private String  CompanyCode;
private String CourseDate;
private boolean Flag;
private String InsDate;
private int InsWay;
private String IsParentsInf;
private String IsVerified;
private String LngCode;
private String MainPeriod;
private String SmsFlag;
private int StuCode;
private int TimeCode;
private String UserIdName;
private String WPCID;
private String WPGID;
private SRV_Student objAC;
private SRV_Absence_Category objStudent;


public SRV_Students_Absence(){

    AbCode= 0;
    AbNum= null;
    AbsCatID= 421;
    ActID= null;
    Cause= null;
    ClCode= 375;
    CoCode= 7628;
    CompanyCode= "8";
    CourseDate= "11/6/2012 9:50 AM";
    Flag=false;
    InsDate=null;
    InsWay=3;
    IsParentsInf=null;
    IsVerified=null;
    LngCode="00";
    MainPeriod=null;
    SmsFlag=null;
    StuCode=1359;
    TimeCode=1963;
    UserIdName=null;
    WPCID=null;
    WPGID=null;
    objAC=null;
    objStudent=null;

}

@Override
public Object getProperty(int arg0) {

    System.out.println("arxh");

      switch (arg0) {
        case 0:
            System.out.println(">0");
            return AbCode;
        case 1:
            System.out.println("1");
            return AbNum;
        case 2:
            System.out.println("2");
            return AbsCatID;
        case 3:
            System.out.println("3");
            return ActID;
        case 4:
            System.out.println("4");
            return Cause;
        case 5:
            System.out.println("5");
            return ClCode;
        case 6:
            System.out.println("6");
            return CoCode;
        case 7:
            System.out.println("7");
            return CompanyCode;
        case 8:
            System.out.println("8");
            return CourseDate;
        case 9:
            System.out.println("9");
            return Flag;
        case 10:
            System.out.println("10");
            return InsDate;
        case 11:
            System.out.println("11");
            return InsWay;
        case 12:
            System.out.println("12");
            return IsParentsInf;
        case 13:
            System.out.println("13");
            return IsVerified;
        case 14:
            System.out.println("14");
            return LngCode;
        case 15:
            System.out.println("15");
            return MainPeriod;
        case 16:
            System.out.println("16");
            return SmsFlag;
        case 17:
            System.out.println("17");
            return StuCode;
        case 18:
            System.out.println("18");
            return TimeCode;
        case 19:
            System.out.println("19");
            return UserIdName;
        case 20:
            System.out.println("20");
            return WPCID;
        case 21:
            System.out.println("21");
            return WPGID;
        case 22:
            System.out.println("22");
            return objAC;
        case 23:
            System.out.println("23");
            return objStudent;
        default:break;
        }

      return 005;
}

@Override
public int getPropertyCount() {
    return 24;
}

@Override
public void getPropertyInfo(int arg0, Hashtable arg1, PropertyInfo info) {



      switch (arg0) {
        case 0:
            System.out.println(":D "+arg0);
            info.type = PropertyInfo.INTEGER_CLASS;
            info.name = "AbCode";
            break;
        case 1:
            System.out.println(":D "+arg0);
             info.type = PropertyInfo.STRING_CLASS;
             info.name = "AbNum";
             break;
        case 2:
            System.out.println(":D "+arg0);
            info.type = PropertyInfo.INTEGER_CLASS;             
            info.name = "AbsCatID";
            break;
        case 3:
            System.out.println(":D "+arg0);
            info.type = PropertyInfo.STRING_CLASS;
            info.name = "ActID";
            break;
        case 4:
            System.out.println(":D "+arg0);
            info.type = PropertyInfo.STRING_CLASS;
            info.name = "Cause";
            break;
        case 5:
            System.out.println(":D "+arg0);
            info.type = PropertyInfo.INTEGER_CLASS;
            info.name = "ClCode";
            break;
        case 6:
            System.out.println(":D "+arg0);
            info.type = PropertyInfo.INTEGER_CLASS;
            info.name = "CoCode";
            break;
        case 7:
            System.out.println(":D "+arg0);
            info.type = PropertyInfo.STRING_CLASS;
            info.name = "CompanyCode";
            break;
        case 8:
            System.out.println(":D "+arg0);
            info.type = PropertyInfo.STRING_CLASS;
            info.name = "CourseDate";
            break;
        case 9:
            System.out.println(":D "+arg0);
            info.type = PropertyInfo.BOOLEAN_CLASS;
            info.name = "Flag";
            break;
        case 10:
            System.out.println(":D "+arg0);
            info.type = PropertyInfo.STRING_CLASS;
            info.name = "InsDate";
            break;
        case 11:
            System.out.println(":D "+arg0);
            info.type = PropertyInfo.INTEGER_CLASS;
            info.name = "InsWay";
            break;
        case 12:
            System.out.println(":D "+arg0);
            info.type = PropertyInfo.STRING_CLASS;
            info.name = "IsParentsInf";
            break;
        case 13:
            System.out.println(":D "+arg0);
            info.type = PropertyInfo.STRING_CLASS;
            info.name = "IsVerified";
            break;
        case 14:
            System.out.println(":D "+arg0);
            info.type = PropertyInfo.STRING_CLASS;
            info.name = "LngCode";
            break;
        case 15:
            System.out.println(":D "+arg0);
            info.type = PropertyInfo.STRING_CLASS;
            info.name = "MainPeriod";
            break;
        case 16:
            System.out.println(":D "+arg0);
            info.type = PropertyInfo.STRING_CLASS;
            info.name = "SmsFlag";
            break;
        case 17:
            System.out.println(":D "+arg0);
            info.type = PropertyInfo.INTEGER_CLASS;
            info.name = "StuCode";
            break;
        case 18:
            System.out.println(":D "+arg0);
            info.type = PropertyInfo.INTEGER_CLASS;
            info.name = "TimeCode";
            break;
        case 19:
            System.out.println(":D "+arg0);
            info.type = PropertyInfo.STRING_CLASS;
            info.name = "UserIdName";
            break;
        case 20:
            System.out.println(":D "+arg0);
            info.type = PropertyInfo.STRING_CLASS;
            info.name = "WPCID";
            break;
        case 21:
            System.out.println(":D "+arg0);
            info.type = PropertyInfo.STRING_CLASS;
            info.name = "WPGID";
            break;
        case 22:
            System.out.println(":D "+arg0);
            info.type = SRV_Absence_Category.class;
            info.name = "objAC";
            break;
        case 23:
            System.out.println(":D "+arg0);
            info.type = SRV_Student.class;
            info.name = "objStudent";
            break;
        default:break;
        }


}

@Override
public void setProperty(int arg0, Object value) {

    System.out.println("setting Property");

      switch (arg0) {
        case 0:
             AbCode = Integer.parseInt(value.toString());
        case 1:
             AbNum  = value.toString();
        case 2:
            AbsCatID=(Integer.parseInt(value.toString()));
        case 3:
            ActID = value.toString();
        case 4:
            Cause = value.toString();
        case 5:
            ClCode = Integer.parseInt(value.toString());
        case 6:
            CoCode = Integer.parseInt(value.toString());
        case 7:
            CompanyCode= value.toString();
        case 8:
            CourseDate = value.toString();
        case 9:
            Flag = Boolean.getBoolean(value.toString());
        case 10:
            InsDate = value.toString();
        case 11:
            InsWay = Integer.parseInt(value.toString());
        case 12:
            IsParentsInf = value.toString();
        case 13:
            IsVerified = value.toString();
        case 14:
            LngCode = value.toString();
        case 15:
            MainPeriod = value.toString();
        case 16:
            SmsFlag = value.toString();
        case 17:
            StuCode = Integer.parseInt(value.toString());
        case 18:
            TimeCode = Integer.parseInt(value.toString());
        case 19:
            UserIdName = value.toString();
        case 20:
            WPCID = value.toString();
        case 21:
            WPGID= value.toString();
        case 22:
            objAC= null;
        case 23:
            objStudent= null;
        }


}

}

この件で何か経験があれば、私は本当にスタックしています。お時間をいただきありがとうございます。

4

0 に答える 0