Expand my Community achievements bar.

Enhance your AEM Assets & Boost Your Development: [AEM Gems | June 19, 2024] Improving the Developer Experience with New APIs and Events

HTTPService XML contentType and Gets

Avatar

Level 1
I have a flex front-end in which I'm trying to get data from
a back-end using an HTTPService. I would like the service to use a
GET, and make the request using the contenttype of application/xml.
So for example here's an HTTPService that does this:

<mx:HTTPService id="testService"

url="/blah/list"

contentType="application/xml"

method="GET"/>



When I go ahead and do the request (using testService.send())
it always does the request as a POST. If I change the HTTPService's
contentType to "application/x-www-form-urlencoded" it works
correctly as a GET.



Does anyone have any pointers on how I could get this to work
the way I want it? Is this a flex bug or an undocumented feature
somewhere? Any workarounds?



Thanks.



Here is the output I get when I put an <mx:TraceTarget>
in the app with the contentType="application/xml":

(mx.messaging.messages::HTTPRequestMessage)#0

body = "<>"

clientId = (null)

contentType = "application/xml"

destination = "DefaultHTTP"

headers = (Object)#1

httpHeaders = (Object)#2

messageId = "3EB110BB-955A-9601-C595-C14D38E12C14"

method = "POST"

recordHeaders = false

timestamp = 0

timeToLive = 0

url = "/pools/list"



2 Replies

Avatar

Level 1
As far as I know, when using the GET methd, the Content-type
header in the request serves no purpose as no data is being sent
with the request. The Content-type header is generally used with
POST requests, which might explain why Flex changes the method when
it encounters the contentType setting.

Avatar

Level 1
I think I may have been confused on the way flex goes about
handling data requests. The final outcome I was looking for was
that requests hitting the server from the flex app would have the
accept type of 'application/xml' (so you'd do a .send() on the
service and it would send out a request who's header would be ...
Accept: application/xml).



I was assuming that this parameter would change that, but I'm
getting the feeling that that is more of an internal to the app
setting than an outbound request parameter and that the browser
will probably keep the same request header no matter what.



So if you're running your flex app on Firefox your server is
always going to see (for the time being)

Accept:
text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5



Hopefully that is clear.



Anyone want to confirm/deny that?