问题
i have Exchange2007. and i am using the url:
"https://exchange2007.exchange.server.com/Exchange/username/calendar";
'calendar', or 'mailbox'( in your language! example, "boite de reception" in french or "calendário" in portuguese)
with that url that i'm using i can list my ressources, but can't send a mail or write an appointement! why?!?
See that i get a response of the server 207multistatus and ok, but the return a HTTP/1.1 404 Resource Not Found i wish a 201 created!!! (for my appointement)
someone have better ideia ? thx.
Console:
>>>>>>> to server ---------------------------------------------------
PROPPATCH /Exchange/marcelo/calend%C3%A1rio HTTP/1.1
Authorization: Basic bWFyY2Vsb0BleGNoYW5nZTptdXN0YWZhMSQ=
Content-Type: text/xml; charset=utf-8
User-Agent: Jakarta Commons-HttpClient/2.0final
Host: exchange2007.exchange.snap.com.br
Content-Length: 1407
<D:propertyupdate xmlns:D="DAV:">
<D:set>
<D:prop>
<mapi xmlns="xmlns">
http://schemas.microsoft.com/mapi/
</mapi>
<Cmd xmlns="urn:">
saveappt
</Cmd>
<dtEnd xmlns="urn:schemas:calendar">
2009-06-30T10:30:00.000Z
</dtEnd>
<contentclass xmlns="DAV">
urn:content-classes:Appointment
</contentclass>
<Subject xmlns="urn:schemas:httpmail">
Changed Test Appointment Subject
</Subject>
<Location xmlns="urn:schemas:calendar">
do
</Location>
<responserequested xmlns="urn:schemas:calendar">
0
</responserequested>
<saveappt xmlns="urn:schemas:calendar:cmd">
1
</saveappt>
<ressource xmlns="DAV">
https://exchange2007.exchange.snap.com.br/Exchange/marcelo/calendárioassuntoteste.EML
</ressource>
<alldayevent xmlns="urn:schemas:calendar">
0
</alldayevent>
<to xmlns="urn:schemas:header">
adrien
</to>
<dtStart xmlns="urn:schemas:calendar">
2009-06-30T10:00:00.000Z
</dtStart>
<isfolder xmlns="DAV">
0
</isfolder>
<cmd xmlns="Cmd">
saveappt
</cmd>
<HtmlDescription xmlns="urn:schemas:httpmail">
Let's meet here
</HtmlDescription>
<outlookmessageclass xmlns="http://schemas.microsoft.com/exchange/subject-utf8=Appointment">
IPM.Appointement
</outlookmessageclass>
<instancetype xmlns="urn:schemas:calendar">
0
</instancetype>
<meetingstatus xmlns="urn:schemas:calendar">
CONFIRMED
</meetingstatus>
<finvited xmlns="urn:schemas:mapi">
0
</finvited>
<BusyType xmlns="urn:schemas:calendar">
BUSY
</BusyType>
</D:prop>
</D:set>
</D:propertyupdate>
------------------------------------------------------------------------
<<<<<<< from server ---------------------------------------------------
HTTP/1.1 207 Multi-Status
Date: Thu, 16 Jul 2009 20:29:40 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
MS-Exchange-Permanent-URL: https://exchange2007.exchange.snap.com.br/Exchange/marcelo/-FlatUrlSpace-/b3ee92320938254c828a96e2e269a417-a6271d
Repl-UID: <rid:b3ee92320938254c828a96e2e269a417000000a6282e>
Content-Type: text/xml
Content-Length: 825
ResourceTag: <rt:b3ee92320938254c828a96e2e269a417000000a6282eb3ee92320938254c828a96e2e269a41700545bb4844c>
MS-WebStorage: 08.01.10240
<a:multistatus
xmlns:a="DAV:"
xmlns:b="xmlns"
xmlns:c="urn:"
xmlns:d="urn:schemas:calendar"
xmlns:e="DAV"
xmlns:f="urn:schemas:httpmail"
xmlns:g="urn:schemas:calendar:cmd"
xmlns:h="urn:schemas:header"
xmlns:i="Cmd"
xmlns:j="http://schemas.microsoft.com/exchange/subject-utf8=Appointment"
xmlns:k="urn:schemas:mapi">
<a:response>
<a:href>
https://exchange2007.exchange.snap.com.br/Exchange/marcelo/Calend%C3%A1rio
</a:href>
<a:propstat>
<a:status>
HTTP/1.1 200 OK
</a:status>
<a:prop>
<b:mapi>
</b:mapi>
<c:Cmd>
</c:Cmd>
<d:dtEnd>
</d:dtEnd>
<e:contentclass>
</e:contentclass>
<f:Subject>
</f:Subject>
<d:Location>
</d:Location>
<d:responserequested>
</d:responserequested>
<g:saveappt>
</g:saveappt>
<e:ressource>
</e:ressource>
<d:alldayevent>
</d:alldayevent>
<h:to>
</h:to>
<d:dtStart>
</d:dtStart>
<e:isfolder>
</e:isfolder>
<i:cmd>
</i:cmd>
<f:HtmlDescription>
</f:HtmlDescription>
<j:outlookmessageclass>
</j:outlookmessageclass>
<d:instancetype>
</d:instancetype>
<d:meetingstatus>
</d:meetingstatus>
<k:finvited>
</k:finvited>
<d:BusyType>
</d:BusyType>
</a:prop>
</a:propstat>
</a:response>
</a:multistatus>
------------------------------------------------------------------------
>>>>>>> to server ---------------------------------------------------
PROPFIND /Exchange/marcelo/calend%C3%A1rio HTTP/1.1
Authorization: Basic bWFyY2Vsb0BleGNoYW5nZTptdXN0YWZhMSQ=
Content-Type: text/xml; charset=utf-8
User-Agent: Jakarta Commons-HttpClient/2.0final
Host: exchange2007.exchange.snap.com.br
Content-Length: 207
Depth: 0
<D:propfind xmlns:D="DAV:">
<D:prop>
<D:displayname>
</D:displayname>
<D:getcontentlength>
</D:getcontentlength>
<D:getcontenttype>
</D:getcontenttype>
<D:resourcetype>
</D:resourcetype>
<D:getlastmodified>
</D:getlastmodified>
<D:lockdiscovery>
</D:lockdiscovery>
</D:prop>
</D:propfind>
------------------------------------------------------------------------
<<<<<<< from server ---------------------------------------------------
HTTP/1.1 207 Multi-Status
Date: Thu, 16 Jul 2009 20:29:40 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Content-Type: text/xml
Accept-Ranges: rows
MS-WebStorage: 08.01.10240
Transfer-Encoding: chunked
<a:multistatus
xmlns:a="DAV:"
xmlns:b="urn:uuid:c2f41010-65b3-11d1-a29f-00aa00c14882/"
xmlns:c="xml:">
<a:response>
<a:href>
https://exchange2007.exchange.snap.com.br/Exchange/marcelo/Calend%C3%A1rio/
</a:href>
<a:propstat>
<a:status>
HTTP/1.1 200 OK
</a:status>
<a:prop>
<a:displayname>
Calendário
</a:displayname>
<a:getcontentlength b:dt="int">
0
</a:getcontentlength>
<a:resourcetype>
<a:collection>
</a:collection>
</a:resourcetype>
<a:getlastmodified b:dt="dateTime.tz">
2009-07-16T20:29:40.098Z
</a:getlastmodified>
<lockdiscovery xmlns="DAV:">
</lockdiscovery>
</a:prop>
</a:propstat>
<a:propstat>
<a:status>
HTTP/1.1 404 Resource Not Found
</a:status>
<a:prop>
<a:getcontenttype>
</a:getcontenttype>
</a:prop>
</a:propstat>
</a:response>
</a:multistatus>
回答1:
I don't know anything about Exchange, but here are two WebDAV related comments.
1) Your property "mapi" in the namespace "xmlns" looks fishy. Not even Microsoft comes up with a namespace name that bad (I hope).
2) In the second server response, you are getting a status of 200 OK for most properties, except for getcontenttype (which is indeed 404).
Other than that: are you sure you it's the right thing to PROPPATCH against a calendar URL to do what you want?
来源:https://stackoverflow.com/questions/1144177/webdav-and-exchange2007-http1-1-404-ressource-not-found