FYI I filed this bug to jQuery over a year ago 
http://dev.jquery.com/ticket/3408

jon


Thierry Boileau wrote:
> Hi Andrzej
>
> could you use the "dataType" argument instead of the "beforeSend" one?
>
> $.ajax({type: 'GET',
>         url: myUrl,
>         success: onAjaxSuccess,
>         error: onAjaxError,
>         cache: false,
>         dataType: "xml");
>
>
> Best regards,
> Thierry Boileau
>
>   
>> Thierry,
>>
>> 1) Our JQuery Ajax call:
>>
>> $.ajax({
>>                  type: 'GET',
>>                  url: myUrl,
>>                  success: onAjaxSuccess,
>>                  error: onAjaxError,
>>                 cache: false,
>>                 beforeSend :
>> function(xhr){xhr.setRequestHeader('Accept','application/xml')}
>>              });
>>
>> Will generate Accept header of  "*/*, application/xml". We want
>> "application/xml".
>>
>> 2) Our Restlet 1.1.5
>>      
>> @Override
>> public Restlet createRoot() {
>>              // Create a router Restlet.
>>              Router router = new Router(getContext());
>>      
>>              // Attach our routers.
>>              router.attach("/test", HelloWorldResource.class);
>>              router.attach("/file/status", FileStatusResource.class);
>>
>>              return router;
>>      }
>>
>>
>> public FileStatusResource(Context context, Request request, Response
>> response) {
>>              super(context, request, response);
>>              
>>              // Read URI query strings.
>>              Form form = request.getOriginalRef().getQueryAsForm();
>>              if (form != null) {
>>                      setUser(form.getFirstValue("user", isIgnoreCase()));
>>                      setOriginalUri(form.getFirstValue("originalUri", 
>> isIgnoreCase()));
>>                      setAction(form.getFirstValue("action", isIgnoreCase()));
>>              }
>>              
>>              // Variants that our resource generates.
>>              getVariants().add(new Variant(MediaType.APPLICATION_JSON));
>>              getVariants().add(new Variant(MediaType.APPLICATION_XML));
>>              
>>      }
>>
>> @Override
>> public Representation represent(Variant variant) throws ResourceException {
>>              Representation representation = null;
>>              
>>              // Validate request
>>              if (StringUtils.isBlank(getUser())) {
>>                      log.debug("GET FileStatusResource bad user. ");
>>                      representation = representError(variant, new 
>> ErrorMessage());
>>                      
>> getResponse().setStatus(Status.CLIENT_ERROR_BAD_REQUEST);
>>                      return representation;
>>              }
>>              
>>              representation = representGet(this,variant);
>>              return representation;
>>      }
>>
>> public final Representation representGet(CoralReefResource crr, Variant
>> variant)
>>                      throws ResourceException {
>>              Representation representation = null;
>>
>>         log.debug("HTTP GET for : " + variant.getMediaType().getName());
>> ...
>>
>>
>>
>>
>> Thierry Boileau wrote:
>>   
>>     
>>> Hello Andrzej,
>>>
>>> I wonder if the source cause if your issue is out there.
>>> Could you tell us how are built your resources? How do you send the 
>>> request using jquery?
>>>
>>> Best regards,
>>> Thierry Boileau
>>>
>>>     
>>>       
>>>> Our Restlet resource server APPLICATION_JSON and APPLICATION_XML. A
>>>> JQuery
>>>> client, sets the Accept Type to "*/*, application/xml". So the Restlet
>>>> negotiates that APPLICATION_JSON should be returned as expected. However,
>>>> we
>>>> want APPLICATION_XML to be served. The problem is that we are unable to
>>>> remove the "*/*" as the first Accept type in JQuery. JQuery seems to tack
>>>> on
>>>> the "*/*" as an Accept Type to every request we send.
>>>>
>>>> Is there an elegant way in Restlet to filter the "*/*" values, e.g. ALL
>>>> or
>>>> APPLICATION_ALL? We can certainly get the Accept Headers in Restlet and
>>>> re-arrange the Accept list ourselves to "override" the Restlet
>>>> negotiation.
>>>> We are thinking of filtering, after Restlet negotiation, based on the
>>>> User-Agent header for this particular JQuery client, so as not to "break"
>>>> the Restlet behaviour for other clients (which is what we expect.)
>>>>
>>>>       
>>>>         
>>> ------------------------------------------------------
>>> http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=2430776
>>>
>>>
>>>     
>>>       
>>     
>
> ------------------------------------------------------
> http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=2430802
>

------------------------------------------------------
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=2430816

Reply via email to