Hi Ian,
Thanks for your email. The first thing to note is that due to a lack of any
Java libraries that support Atom-Multipart deposit properly, DSpace doesn't
currently support multipart deposits. This is the same with other Java-based
implementations such as Fedora.
Therefore there are two options:
- Use the 'deposit()' method to deposit a package created using the
METS / SWAP packager
(See:
https://github.com/swordapp/swordappv2-php-library/blob/master/test/test-packager-mets_swap.php
for an example of how to build a package)
- First deposit the metadata as an atom entry (depositAtomEntry) with
in-progress set to true, followed by extra calls to add files
(addExtraFileToMediaResource) with the final call setting the in-progress to
false.
One other thing to check: Your email says:
I've also changed the code to call the deposit method
...
About to deposit multipart file (test-files/swordlogo.jpg) to
http://vmerdmsdspace01.ex.ac.uk/swordv2/collection/10871/6
As: Guest406
sac_curl=Resource id #22
sac_resp= 2012-10-25T13:42:27zeda-sysad...@exeter.ac.ukProcessing
failedUnacceptable content type in deposit request:
application/x-www-form-urlencoded
This looks you may not have changed the method being used, as the debug text
still mentions multipart files, and the mime type sent suggests a multipart
file.
I hope this helps,
Stuart Lewis
Head of Digital Library Services
Library & Collections, Information Services
University of Edinburgh
stuart.le...@ed.ac.uk<mailto:stuart.le...@ed.ac.uk>
From: Wellaway, Ian [mailto:i.j.wella...@exeter.ac.uk]
Sent: 25 October 2012 13:55
To: 'sword-app-tech@lists.sourceforge.net'
Subject: [sword-app-tech] PHP swordv2 - 500 error / Unacceptable content type
Hi,
I've been attempting to test the swordv2 php library, with a hope to creating a
'record-edit' feature in dspace so users can update their archived items (a
feature strangely lacking from dspace).
I've copied the libraries down from the swordapp website and have configured
the test-swordappclient.php page but get the following error from the
deposit-multipart method:
About to deposit multipart file (test-files/atom_multipart_package) to
http://vmerdmsdspace01.ex.ac.uk/swordv2/collection/10871/6
As: Guest406
sac_curl=Resource id #22
sac_resp=
HTTP Status 500 -
________________________________
type Exception report
message
description The server encountered an internal error () that prevented it from
fulfilling this request.
exception
javax.servlet.ServletException:
org.apache.commons.fileupload.FileUploadException: Stream ended unexpectedly
org.swordapp.server.SwordAPIEndpoint.getPartsFromRequest(SwordAPIEndpoint.java:458)
org.swordapp.server.SwordAPIEndpoint.addDepositPropertiesFromMultipart(SwordAPIEndpoint.java:208)
org.swordapp.server.CollectionAPI.post(CollectionAPI.java:145)
org.swordapp.server.servlets.CollectionServletDefault.doPost(CollectionServletDefault.java:48)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause
org.apache.commons.fileupload.FileUploadException: Stream ended unexpectedly
org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:381)
org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126)
org.swordapp.server.SwordAPIEndpoint.getPartsFromRequest(SwordAPIEndpoint.java:452)
org.swordapp.server.SwordAPIEndpoint.addDepositPropertiesFromMultipart(SwordAPIEndpoint.java:208)
org.swordapp.server.CollectionAPI.post(CollectionAPI.java:145)
org.swordapp.server.servlets.CollectionServletDefault.doPost(CollectionServletDefault.java:48)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause
org.apache.commons.fileupload.MultipartStream$MalformedStreamException: Stream
ended unexpectedly
org.apache.commons.fileupload.MultipartStream$ItemInputStream.makeAvailable(MultipartStream.java:983)
org.apache.commons.fileupload.MultipartStream$ItemInputStream.read(MultipartStream.java:887)
java.io.InputStream.read(InputStream.java:85)
org.apache.commons.fileupload.util.Streams.copy(Streams.java:94)
org.apache.commons.fileupload.util.Streams.copy(Streams.java:64)
org.apache.commons.fileupload.MultipartStream.readBodyData(MultipartStream.java:593)
org.apache.commons.fileupload.MultipartStream.discardBodyData(MultipartStream.java:619)
org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl.findNextItem(FileUploadBase.java:1012)
org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl.<init>(FileUploadBase.java:942)
org.apache.commons.fileupload.FileUploadBase.getItemIterator(FileUploadBase.java:331)
org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:349)
org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126)
org.swordapp.server.SwordAPIEndpoint.getPartsFromRequest(SwordAPIEndpoint.java:452)
org.swordapp.server.SwordAPIEndpoint.addDepositPropertiesFromMultipart(SwordAPIEndpoint.java:208)
org.swordapp.server.CollectionAPI.post(CollectionAPI.java:145)
org.swordapp.server.servlets.CollectionServletDefault.doPost(CollectionServletDefault.java:48)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
note The full stack trace of the root cause is available in the Apache
Tomcat/6.0.32 logs.
Apache Tomcat/6.0.32
sac_status=500
Fatal error: Uncaught exception 'Exception' with message 'Error parsing
response entry (String could not be parsed as XML)' in
/mnt/webdata1/webs/apps.exeter.ac.uk/docs/lisa_dev/swordv2/swordappclient.php:583
Stack trace: #0
/mnt/webdata1/webs/apps.exeter.ac.uk/docs/lisa_dev/swordv2/swordappclient.php(134):
SWORDAPPClient->depositMultipartByMethod('http://vmerdmsd...', 'Guest406',
'PNFQwM', NULL, 'test-files/atom...', 'POST', 'http://purl.org...') #1
/mnt/webdata1/webs/apps.exeter.ac.uk/docs/lisa_dev/swordv2/test/test-swordappclient.php(73):
SWORDAPPClient->depositMultipart('http://vmerdmsd...', 'Guest406', 'PNFQwM',
NULL, 'test-files/atom...', 'http://purl.org...', false) #2 {main} thrown in
/mnt/webdata1/webs/apps.exeter.ac.uk/docs/lisa_dev/swordv2/swordappclient.php
on line 583
I've also changed the code to call the deposit method, as suggested in the
discussion from
http://sourceforge.net/mailarchive/forum.php?thread_name=4FA170FE.3050608%40wijiti.com&forum_name=sword-app-tech
but then receive the following:
About to deposit multipart file (test-files/swordlogo.jpg) to
http://vmerdmsdspace01.ex.ac.uk/swordv2/collection/10871/6
As: Guest406
sac_curl=Resource id #22
sac_resp= 2012-10-25T13:42:27zeda-sysad...@exeter.ac.ukProcessing
failedUnacceptable content type in deposit request:
application/x-www-form-urlencodedorg.swordapp.server.SwordError: Unacceptable
content type in deposit request: application/x-www-form-urlencoded at
org.dspace.sword2.DSpaceSwordAPI.isAcceptable(DSpaceSwordAPI.java:228) at
org.dspace.sword2.CollectionDepositManagerDSpace.createNewFromBinary(CollectionDepositManagerDSpace.java:218)
at
org.dspace.sword2.CollectionDepositManagerDSpace.createNew(CollectionDepositManagerDSpace.java:112)
at org.swordapp.server.CollectionAPI.post(CollectionAPI.java:158) at
org.swordapp.server.servlets.CollectionServletDefault.doPost(CollectionServletDefault.java:48)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) at
javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190) at
org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291) at
org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:776) at
org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:705) at
org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:898)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
at java.lang.Thread.run(Thread.java:619)
Received HTTP status code: 415 (Unsupported media type)
About to retrieve deposit receipt from
As: Guest406
Fatal error: Uncaught exception 'Exception' with message 'Error parsing
response entry (String could not be parsed as XML)' in
/mnt/webdata1/webs/apps.exeter.ac.uk/docs/lisa_dev/swordv2/swordappclient.php:229
Stack trace: #0
/mnt/webdata1/webs/apps.exeter.ac.uk/docs/lisa_dev/swordv2/test/test-swordappclient.php(324):
SWORDAPPClient->retrieveDepositReceipt(NULL, 'Guest406', 'PNFQwM', NULL,
'http://purl.org...') #1 {main} thrown in
/mnt/webdata1/webs/apps.exeter.ac.uk/docs/lisa_dev/swordv2/swordappclient.php
on line 229
In each case there is nothing in the tomcat or dspace logs.
Any ideas?
For help, I've printed some of the curl responses to the screen.
Thanks
Ian
------------
Ian Wellaway
Senior System Support & Development Officer - Enterprise Applications
(Wednesdays only)
&
Technical Developer, Open Exeter - Infrastructure Systems (Monday-Tuesday,
Thursday-Friday)
Exeter IT
Room 54
Laver Building
University of Exeter
EX4 4QE
UK
tel +44 1392 722852
The University of Edinburgh is a charitable body, registered in
Scotland, with registration number SC005336.
------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_sfd2d_oct
_______________________________________________
sword-app-tech mailing list
sword-app-tech@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sword-app-tech