【问题标题】:complex ksoap in android javaandroid java中的复杂ksoap
【发布时间】:2012-02-25 10:09:34
【问题描述】:

我正在尝试使用 android 上的 ksoap java 将一些数据上传到 .net 中的 webservise。 我已经尝试过,但没有成功。结果为空,我不知道为什么会这样 正在使用的代码如下:

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());

}

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

【问题讨论】:

    标签: java android ksoap


    【解决方案1】:

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

    yyyyMMddThhmmss
    

    我不记得确切的语法

    【讨论】:

    • 其实不确定。我已经在使用与其他更简单的 Web 服务相同的时间戳,并且它可以正常工作。所以我不认为这是问题所在。实际上我不知道是错误
    • 你可以尝试添加androidHttpTransport.debug = true;,然后调用httpTransport.requestDump检查请求是否正常(这是在androidHttpTransport.call(SOAP_ACTION,envelope);之前完成的)
    • httpTransport.requestDump 它返回 null。这意味着什么。我不知道问题是什么。是正确的方式,正在做 web 服务的请求。在同一个 xml 上,我有 2 个简单的请求和 1 个复杂的请求。我如何实现它们是正确的吗?
    • 啊,对不起,httpTransport.requestDump 必须在 androidHttpTransport.call(SOAP_ACTION, envelope); 之后行
    猜你喜欢
    • 2015-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多