Я пытаюсь вызвать веб-службу Hessian из приложения Javascript, но у меня возникают проблемы с анализом ответа, поскольку jQuery обрабатывает ответ как текст и удаление первых байтов. В моем исследовании я выяснил, что вам нужно установить кодировку как 'charset = x-user-defined', чтобы браузер оставил мои байты как есть. Но, по словам Аякса документы:Сила «charset = x-user-defined» на jQuery Ajax Post
Отправка данных на сервер
По умолчанию Ajax запросы посылаются с помощью метода GET HTTP. Если требуется метод POST , метод может быть задан путем установки значения для опции типа. Этот параметр влияет на то, как содержимое параметра данных отправляется на сервер. Данные POST всегда будут , переданные на сервер с использованием кодировки UTF-8, согласно стандарту XMLHTTPRequest W3C .
И действительно, кодировка не меняется независимо от настроек, которые я использовал. Я попытался следующие, отдельно и все сразу, не повезло
$.ajax({
type : 'POST',
url : url,
timeout : 3000,
data : parameters,
contentType : "x-application/hessian; charset=x-user-defined'",
mimeType: 'text/plain; charset=x-user-defined',
headers: {
Accept : "text/plain; charset=x-user-defined",
"Content-Type": "text/plain; charset=x-user-defined"
},
beforeSend : function(xhr) {
xhr.overrideMimeType("text/plain; charset=x-user-defined");
}
})
Также я пытался возиться с преобразователями данных и пользовательских ContentTypes, определенных в JQuery, без Succes.
Похоже, что согласно стандарту я не смогу это сделать. Он работает с GET, но не с POST, и для протокола Hessian требуется POST.
Есть ли у вас идеи? Или мне нужно, чтобы начать строить свой XHR метод формы нуля?
Вашего вопроса о посланных данных, или ответных данных? Вы писали, что _jQuery обрабатывает ответ как text_, но затем цитирует раздел документации об опубликованных данных. – Barmar
Это правда! Я не заметил, что он говорит «серверу». Моя проблема - чтение данных с сервера. И, я полагаю, поскольку jQuery не хочет изменять заголовок, я не собираюсь получать двоичный ответ, который мне нужен. – FreemanAMG
Способ обработки ответа контролируется опцией 'dataType'. Если вы не укажете 'json',' xml' или 'jsonp', или сервер устанавливает один из них в заголовке ответа' Content-type', я думаю, что он просто возвращает данные дословно как строку. – Barmar