XML-запрос openrasta возвращается как json - PullRequest
3 голосов
/ 04 марта 2010

У меня очень простое приложение OpenRasta с ресурсом Home с одностроковым свойством Title (прямо из примера с документом сообщества OpenRasta).

Я настроил контракты данных XML и JSON для ресурса следующим образом:

ResourceSpace.Has.ResourcesOfType<Home>()
    .AtUri("/home")
    .HandledBy<HomeHandler>()
    .AsXmlDataContract()
    .And.AsJsonDataContract();

Из jQuery я могу получать данные JSON просто отлично. Однако, когда я делаю JQuery XML Ajax-запрос, я получаю данные JSON.

Мой код jQuery выглядит так:

$.ajax(
{
    url: "/home",
    dataType: "xml",
    success: function(result) {
        $('#xmlSpan').append($(result).find('Title').text());
    },
    error: function(request, status, ex) {
        $('#xmlSpan').append('error: ');
        $('#xmlSpan').append(status + ', ');
        $('#xmlSpan').append(ex.toString());
    }
});

Добавляемая информация об ошибке выглядит так:

ошибка: parsererror, TypeError: a is null

Но вот интересная часть. От Fiddler мой запрос выглядит так:

GET http://127.0.0.1:51041/home HTTP/1.1
Host: 127.0.0.1:51041
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.8) Gecko/20100202 Firefox/3.5.8
Accept: application/xml, text/xml, */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
X-Requested-With: XMLHttpRequest
Referer: http://ipv4.fiddler:51041/WebForm1.aspx
Cache-Control: max-age=0

... и мой ответ выглядит так:

HTTP/1.1 200 OK
Server: ASP.NET Development Server/9.0.0.0
Date: Thu, 04 Mar 2010 18:30:04 GMT
X-AspNet-Version: 2.0.50727
Content-Length: 18
Cache-Control: private
Content-Type: application/json; q=0.5
Connection: Close

{"Title":"Foooo!"}

Мой запрос приходит как «Accept: application / xml», но ответ «application / json» (и возвращаемые данные, очевидно, json).

Что я делаю не так?

1 Ответ

4 голосов
/ 25 марта 2010

Mike

(извините, я не видел этот вопрос раньше)

Вы не делаете ничего плохого, и это должно работать хорошо.

Ваш заголовок Accept: указывает, что ваш клиент рад получить приложение / XML или что-либо еще ( / ). Скорее всего, OpenRasta предполагает, что «все остальное» работает и работает с кодеком json.

Если вы измените заголовок на

Примите: application / xml, text / xml; q = 0,9, / ; q = 0,8

Тогда ты будешь в порядке. Кроме того, просто удалите / полностью /

Тем не менее, обычно / всегда ставится в качестве последнего средства в алгоритмах согласования контента openrasta, поэтому этот результат очень удивителен. Какую версию ИЛИ вы используете?

...