android java中的复杂ksoap

时间:2012-02-25 10:09:34

标签: java android ksoap

我正在尝试使用Android上的ksoap java将一些数据上传到.net中的webservise。 我试着去尝试,但没有成功。结果为null,我不知道为什么会发生这种情况 我正在使用的代码如下:

xml网络服务

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <AddBloodPressure xmlns="http://tempuri.org/">
      <PatientID>int</PatientID>
      <BloodPressure>
        <Sistolic>int</Sistolic>
        <Distolic>int</Distolic>
      </BloodPressure>
      <DateTimeStamp>dateTime</DateTimeStamp>
    </AddBloodPressure>
  </soap:Body>
</soap:Envelope>

KvmSerializable代码是

public class Category implements KvmSerializable
{
    public int Distolic;
    public int Sistolic;



    public int getDistolic() {
        return Distolic;
    }
    public void setDistolic(int distolic) {
        Distolic = distolic;
    }

    public int getSistolic() {
        return Sistolic;
    }
    public void setSistolic(int sistolic) {
        Sistolic = sistolic;
    }



    public Object getProperty(int arg0) {

        switch(arg0)
        {
        case 0:
            return getSistolic();
        case 1:
            return getDistolic();

        }

        return null;
    }

    public int getPropertyCount() {
        return 3;
    }

    public void getPropertyInfo(int arg0, Hashtable arg1, PropertyInfo info) {
        switch(arg0)
        {
        case 0:
            info.type = PropertyInfo.INTEGER_CLASS;
            info.name = "Sistolic";
            break;
        case 1:
            info.type = PropertyInfo.INTEGER_CLASS;
            info.name = "Distolic";
            break;
        default:break;
        }
    }

    public void setProperty(int arg0, Object arg1) {
        switch (arg0)
        {
        case 0:
            this.Sistolic = Integer.parseInt(arg1.toString());
            break;
        case 1:
            this.Distolic=Integer.parseInt(arg1.toString());
            break;

        }
    }
}

我的主要是:

    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);    
        request.addProperty("PatientId", "8");
      Category i1=new Category();
          i1.setDistolic(100);
      i1.setSistolic(100);
      PropertyInfo pi=new PropertyInfo();
      pi.setName("BloodPressure");
      pi.setValue(i1);
     pi.setType(i1.getClass());
     request.addProperty(pi);                          request.addProperty("DateTimeStamp","2012-01-13");
    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    envelope.dotNet=true;
    envelope.setOutputSoapObject(request);
        HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
        androidHttpTransport.call(SOAP_ACTION, envelope);

    Object result=((Object)envelope.getResponse());
    String resultString=new String(result.toString());

}

确定。这就是我正在使用的。有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我相信时间戳属性不正确。通常,时间戳的.net Web服务格式类似于

yyyyMMddThhmmss

我记不起确切的语法

相关问题