Hi there,
I try to use a PUT request on a page via REST API on a Confluence 6.15.4.
The call is:
wget --quiet \
--method PUT \
--header 'content-type: application/json' \
--header 'authorization: Basic xsdghseuhfeshfwhefhkjf' \
--body-data '{\n "minorEdit": "true",\n "id": "182353945",\n "type": "page",\n "status": "current",\n "title": "Sediment Echo Sounder (Parasound P70)",\n "space": {\n "id": 286982148,\n "key": "EFPW"\n },\n "body": {\n "storage": {\n "value": "<p>Test</p>",\n "representation": "storage"\n }\n },\n "version": {\n "number": 50,\n "message": "Automatically updated by Sensor2Confluence-Transporter (polarstern@binf02p165)"\n }\n}\n' \
--output-document \
- https://localhost/confluence/rest/api/content/182353945
The return is:
{
"statusCode": 500,
"message": "",
"reason": "Internal Server Error"
}
The log file in Confluence contains:
2019-08-28 10:25:20,470 ERROR [http-nio-8090-exec-63] [rest.api.model.ExceptionConverter] convertServiceException No status code found for exception, converting to internal server error :
-- url: /rest/api/content/182353945 | traceId: 253407b78f80aa52 | userName: xxxxxxx
java.io.EOFException: No content to map to Object due to end of input
at org.codehaus.jackson.map.ObjectMapper._initForReading(ObjectMapper.java:2775)
at org.codehaus.jackson.map.ObjectMapper._readValue(ObjectMapper.java:2691)
at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1315)
at org.codehaus.jackson.jaxrs.JacksonJsonProvider.readFrom(JacksonJsonProvider.java:419)
at com.sun.jersey.spi.container.ContainerRequest.getEntity(ContainerRequest.java:490)
at com.sun.jersey.spi.container.AdaptingContainerRequest.getEntity(AdaptingContainerRequest.java:236)
at com.sun.jersey.server.impl.model.method.dispatch.EntityParamDispatchProvider$EntityInjectable.getValue(EntityParamDispatchProvider.java:123)
at com.sun.jersey.server.impl.inject.InjectableValuesProvider.getInjectableValues(InjectableValuesProvider.java:86)
at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$EntityParamInInvoker.getParams(DispatchProviderHelper.java:133)
at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$TypeOutInvoker._dispatch(DispatchProviderHelper.java:165)
Has anyone an idea? I believe it does not work since the last upgrade. But I cannot find any error in the JSON itself. A GET to that URL works fine. If I change username to a non-existing, I get an 401 Unauthorized. So everything as expected...
Cheers,
Sebastian
Okay I solved the problem.
The problem was indeed a wrong URL I used.
I used https://localhost/confluence/rest/api.
Correct or new (?) is https://localhost/rest/api.
The problem is there is still some kind of redirect from /confluence/rest to /rest so a GET for example worked fine. *But* the redirect somehow cuts off all PUT parameters so every PUT request sent to the API was empty. Really stupid...
CURL seems to work, but WGET and my Python requests-module which was the original intention to use failed.
Sebastian
Try curl!
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.