如何将 DateTime 从 android (ksoap2) 发送到 .net webService?

Mic*_*lka 2 android web-services ksoap2 android-ksoap2

我有一个 .net 网络服务,我必须在其中发送一个参数(日期时间类型),如您所见:

 <startDateTime>dateTime</startDateTime>
Run Code Online (Sandbox Code Playgroud)

在Android客户端,我使用kso​​ap2,我不知道,如何发送那种类型的数据?请帮助设置此类型- 下面的代码不起作用。

PropertyInfo propInfo3 = new PropertyInfo();
propInfo3.name="startDateTime";
propInfo3.value="2012-02-01";
Run Code Online (Sandbox Code Playgroud)

Tja*_*art 5

以下是我在应用程序中调用 Web 服务方法的方式。注意我用来转换java日期的方法。您需要 ISO 日期格式。

protected static Object callMethod(String method, Map<String, Object> parameters) throws IOException, XmlPullParserException {
    SoapObject request = new SoapObject(WSDL_TARGET_NAMESPACE, method);

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    envelope.dotNet = true;
    envelope.headerOut = new Element[1];
    envelope.headerOut[0] = buildAuthHeader();
    envelope.setOutputSoapObject(request);
    if (parameters != null) {
        for (String item : parameters.keySet()) {
            Object itemValue = parameters.get(item);
            if (itemValue.getClass().getName().equals("java.util.Date")) {
                // If it's a date then we have to format it because ksoap
                // does not know how to do this.
                request.addProperty(item, getSOAPDateString((java.util.Date) itemValue));
            } else {
                request.addProperty(item, itemValue);
            }
        }
    }

    HttpTransportSE httpTransport = new HttpTransportSE(SOAP_ADDRESS, 10000);
    httpTransport.debug = true;

    httpTransport.call(WSDL_TARGET_NAMESPACE + "/" + method, envelope);
    String soapString = httpTransport.requestDump;
    System.out.println(soapString);
    return envelope.getResponse();
}
Run Code Online (Sandbox Code Playgroud)

这是返回实际字符​​串的方法:

private static Object getSOAPDateString(java.util.Date itemValue) {
    String lFormatTemplate = "yyyy-MM-dd'T'hh:mm:ss'Z'";
    DateFormat lDateFormat = new SimpleDateFormat(lFormatTemplate);
    String lDate = lDateFormat.format(itemValue);

    return lDate;
}
Run Code Online (Sandbox Code Playgroud)