Hi,
We use Service Desk API to post bug fix requests from our french speaking customers in our Jira Service Desk Server. We use an oauth node.js client to secure the dialog between our website and the Jira Service Desk.
Some field values can contain some french accented characters as é, è, à.
When we try to post a request with accented characters through a node oauth client wrapper, the service desk API send us a 500 error. We don't have this problem with basic auth but it's less secure.
Here is a typical JSON body request with accented characters :
{
"serviceDeskId":3,
"requestTypeId":71,
"requestFieldValues":{
"summary": "Avec des caractères accentués",
"description":"L'été sera comme ça",
"customfield_10200":{
"value":"DigitalWallonia.be"
},
"customfield_10203":"http://vm-nodejs-cw-dev.digitalwallonia.be:8080/fr",
"environment":"*User-Agent*: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36 *Screen Resolution* 1920 X 1040"
}
}
Here is the beginning of 500 error I've got when trying to post a request with accented character in JSON value.
<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><status><status-code>500</status-code><message>Unexpected end-of-input in VALUE_STRING\n at [Source: org.apache.catalina.connector.CoyoteInputStream@75787190; line: 1, column: 883]</message><stack-trace>org.codehaus.jackson.JsonParseException: Unexpected end-of-input in VALUE_STRING\n at [Source: org.apache.catalina.connector.CoyoteInputStream@75787190; line: 1, column: 883]\n\tat org.codehaus.jackson.JsonParser._constructError(JsonParser.java:1433)\n\tat org.codehaus.jackson.impl.JsonParserMinimalBase._reportError(JsonParserMinimalBase.java:521)\n\tat org.codehaus.jackson.impl.JsonParserMinimalBase._reportInvalidEOF(JsonParserMinimalBase.java:454)\n\tat org.codehaus.jackson.impl.JsonParserMinimalBase._reportInvalidEOF(JsonParserMinimalBase.java:448)\n\tat org.codehaus.jackson.impl.JsonParserBase.loadMoreGuaranteed(JsonParserBase.java:426)\n\tat org.codehaus.jackson.impl.Utf8StreamParser._finishString2(Utf8StreamParser.java:1924)\n\tat org.codehaus.jackson.impl.Utf8StreamParser._finishString(Utf8StreamParser.java:1905)\n\tat org.codehaus.jackson.impl.Utf8StreamParser.getText(Utf8StreamParser.java:276)\n\tat org.codehaus.jackson.map.deser.std.UntypedObjectDeserializer.deserialize(UntypedObjectDeserializer.java:59)\n\tat org.codehaus.jackson.map.deser.std.MapDeserializer._readAndBind(MapDeserializer.java:319)\n\tat org.codehaus.jackson.map.deser.std.MapDeserializer.deserialize(MapDeserializer.java:249)\n\tat org.codehaus.jackson.map.deser.std.MapDeserializer.deserialize(MapDeserializer.java:33)\n\tat org.codehaus.jackson.map.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:299)\n\tat org.codehaus.jackson.map.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:905)\n\tat org.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromObjectUsingNonDefault(BeanDeserializer.java:739)\n\tat org.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:683)\n\tat org.codehaus.jackson.map.deser.BeanDeserializer.deserialize(BeanDeserializer.java:580)\n\tat org.codehaus.jackson.map.ObjectMapper._readValue(ObjectMapper.java:2704)\n\tat org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1315)\n\tat org.codehaus.jackson.jaxrs.JacksonJsonProvider.readFrom(JacksonJsonProvider.java:419)\n\tat com.sun.jersey.spi.container.ContainerRequest.getEntity(ContainerRequest.java:490)\n\tat com.sun.jersey.spi.container.AdaptingContainerRequest.getEntity(AdaptingContainerRequest.java:236)\n\tat com.sun.jersey.server.impl.model.method.dispatch.EntityParamDispatchProvider$EntityInjectable.getValue(EntityParamDispatchProvider.java:123)\n\tat com.sun.jersey.server.impl.inject.InjectableValuesProvider.getInjectableValues(InjectableValuesProvider.java:86)\n\tat com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$EntityParamInInvoker.getParams(DispatchProviderHelper.java:133)\n\tat com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$ResponseOutInvoker._dispatch(DispatchProviderHelper.java:188)\n\tat com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)\n\tat com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)\n\tat com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)\n\tat com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)\n\tat com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)\n\tat com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542)\n\tat com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1473)\n\tat com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419)\n\tat com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409)\n\tat com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409)\n\tat com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558)\n\tat com.atlassian.plugins.rest.modul
Can you advise us ?
Thanks
What kind of headers does this oauth node use in order to send these API requests? I found a related error over in https://stackoverflow.com/questions/36720168/could-not-read-json-unexpected-end-of-input-in-field-name that seems to indicate the headers used for this request might not be sufficient for the REST API call being made.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.