I guess we do not have to use Form object. If using String yields a more generic solution, we probably should do it. I am comparing the response message which calls the setEntity() with a String and we can specify the media type. The headers are set as attributes in the Restlet message.

Bee1000 wrote:
I'm working on a patch for this.  I have a question.  The Camel binding layer
appears to be mapping non Restlet message headers into URL parameters via
the Restlet Form object.  I believe URL parameters are only valid for GET
and POST w/content type of application/x-www-form-urlencoded.  What should
we do with the headers for PUT, DELETE, and non-form POSTs?
Should I move this thread to the developers forum?  I wasn't sure if only
jira stuff went there.



William Tam wrote:
I see. The method probably should have called request.setEntity(Sting, MediaType) similar to the response message. I'm looking forward to your patch.

Thanks,
William

Bee1000 wrote:
You can set the header, but it is not used in the code.  The method calls
form.getWebRepresentation() which is hard coded to use
'application/x-www-form-urlencoded'.

I will look into creating a jira issue and a test case, and possibly
provide
a fix as well.
Rich


William Tam wrote:
Have you tried setting the Content-Type header (to "application/json") in your request Camel message? It looks like DefaultRestletBinding.populateRestletRequestFromExchange() method will add the header to the Form. If it does not work, any chance you are create a Jira with a testcase? A patch would be great, too. :-)

Bee1000 wrote:
Using http does work, but it still seems like a bug to hard code the
encoding
of post data for restlet.  I thought post data could be any text or
binary
data.  It seems like this reduces the usefulness of the restlet camel
component.  Just out of curiosity, is there another reason why the
encoding
is hardcoded?  (Perhaps to be more precise, the message body is being
encoded in the RESTLET component, which for POST means that post data
is
being encoded.)



willem.jiang wrote:
Hi,

I think you can try to use Camel-Http component, which is leverage common http client to invoke the http service.

Willem

Bee1000 wrote:
I'm trying to post documents to couchdb using restlet but the restlet
component is hard coded to url encode the post data.  This makes the
JSON
text i'm posting invalid.  Do I need to use some other component or
is
there
a way around this?

Reply via email to