当发送一个滤光器在PHP一切web服务工作正常,但是当我们需要排序的日期,我们遇到了一个问题。 我们需要得到一个特定日期之后修改的所有对象。
在一个页面,我们有一个日期元素,像这样:
<xsd:element minOccurs="0" maxOccurs="1" name="Last_Date_Modified" type="xsd:date"/>
我们已经尝试过的解决方案在这里解释的SO:
动态NAV(Navision的)Web服务ReadMultiple日期过滤器
但是,我们的日期格式是有点不同,我们是这样的: 2013-01-01
在我们的过滤器,我们已经试过如下:
array(
'Field' => 'Last_Date_Modified',
'Criteria' => '20130101..'
)
还有一些其他的变化,但它不会返回任何东西。 如果我们将其留空它返回的一切。 没有人有一个想法,我们能做些什么? 它是否有助于如果我们以某种方式保存在LAST_MODIFIED_DATE像Unix时间戳一个BIGINT?
我测试过类似的设置与SOAPUI,这里是我得到了什么:
传出消息:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:obj="urn:microsoft-dynamics-schemas/page/objlist">
<soapenv:Header/>
<soapenv:Body>
<obj:ReadMultiple>
<obj:filter>
<obj:Field>Date</obj:Field>
<obj:Criteria>>=01012013</obj:Criteria>
</obj:filter>
<obj:bookmarkKey></obj:bookmarkKey>
<obj:setSize></obj:setSize>
</obj:ReadMultiple>
</soapenv:Body>
</soapenv:Envelope>
它导致正确的响应(月以来有3条我在我的基地更改)同样的反应是正确的,如果我把01012013..
或01.01.2013..
甚至01/01/2013..
但错误将在响应中返回为20130101..
在响应此领域有这样值<Date>2013-05-15</Date>
这是我的位置不正确的格式虽然。
所以,你的导航服务器是在您的要求等一些其他的日期格式。 检查导航服务器的CustomSettings.config
文件,看它是否已<add key="ServicesCultureDefaultUserPersonalization" value="true"/>
键。 如果你将其设置为“假”服务器将会工作在EN-US日期和数字格式。
同时检查User Personalization
表中导航。 如果以前的密钥设置为true,那么净资产值将尝试使用用户在该表中定义的语言设置。
如果没有什么帮助soapUI的尝试,以找出是否应对资产净值正确的直接消息(见上格式或WSDL文件饲料的soapUI)。