【问题标题】:How to send NSDate to soap web service - .net如何将 NSDate 发送到肥皂网络服务 - .net
【发布时间】:2012-01-26 14:27:36
【问题描述】:

我有一个小问题。我必须将 NSDate 作为参数发送到肥皂网络方法。

[WbMethod]
public void Method(DateTime date){...

从objective-c我发送这样的数据:

NSDate* date = [NSDate date];

    ...
    NSString *soapMsg = 
        [NSString stringWithFormat:
         @"<?xml...
             "<date>%d</date>"
         ...
         "</soap:Body>"
         "</soap:Envelope>", date
         ];

我收到错误:

...<faultstring>Server was unable to read request. ---&gt; There is an error in XML document (1, 354). ---&gt; The string '93462576' is not a valid AllXsd value.</faultstring><detail /></soap:Fault></soap:Body></soap:Envelope>

我也尝试将 %d 更改为 %@,然后错误是:

...faultstring>Server was unable to read request. ---&gt; There is an error in XML document (1, 371). ---&gt; The string '2012-01-26 14:27:45 +0000' is not a valid AllXsd value.</faultstring><detail /></soap:Fault></soap:Body></soap:Envelope>

【问题讨论】:

  • 您的服务期望的日期格式是什么?时间戳,日期时间,也许是其他一些自定义“yyyMMddhhmm”?
  • SOAP 请求的日期应该采用什么格式?
  • DateTime 没有自定义格式。月/日/年 时、分、秒。

标签: iphone objective-c ios web-services soap


【解决方案1】:

如果它应该是你提到的格式,那么

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MM/dd/yyyy hh,mm,ss"];
NSString *yourDateString = [formatter stringFromDate:[NSDate date]];
[formatter release];

【讨论】:

  • 我使用了这种日期格式并且它有效:yyyy-MM-dd'T'HH:mm:ss
【解决方案2】:

我不确定你为什么要使用 %d,因为它代表一个整数。 您是否正在尝试获取 NSDate 的 unix 时间戳?如果是这样,您可以使用 timeIntervalSince1970 或使用 description 来获取 NSDate 对象的字符串表示形式。

【讨论】:

  • 我也试过这个并作为 '%f' 传递给服务,我得到错误:字符串 '1327652581.522795' 不是有效的 AllXsd 值。这就是我获取日期的方式: NSTimeInterval date = [now timeIntervalSince1970];
  • 再一次,%f 代表浮点数,%d 代表整数。他们都没有真正将 NSDate 转换为可用的甲酸盐。如果您的 SOAP 服务需要 yyyyMMddhhmm 格式,您可以按照其他人的建议使用 NSDateFormatter。
【解决方案3】:

NSDateFormatter 就是你要找的

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-29
    • 2017-01-16
    相关资源
    最近更新 更多