Как отправить объект JSON на сервер с помощью casper.open()?

Я пытаюсь отправить запрос POST на сервер, используя следующее

this.open('someurl',{
            method: 'post',
            data:   {
                'memberId': obj.id,
                'password': obj.password
            },
            headers: {
                'Accept':'application/json',
                'Content-Type':'application/json',
            }
        }).then(function(response){
            require('utils').dump(response);
        });

Но это не удается со следующим ответом

{
"contentType": null,
"headers": [
    {
        "name": "Content-Length",
        "value": "8008"
    },
    {
        "name": "Server",
        "value": "Jetty(8.1.8.v20121106)"
    }
],
"id": 2,
"redirectURL": null,
"stage": "end",
"status": 415,
"statusText": "Unsupported Media Type",
"time": "2015-02-17T10:34:16.952Z",
"url": <someURL>,
"data": null

Принимая во внимание, что эквивалентная команда CURL успешна

curl -i someurl -X POST -H Content-Type:application/json --data '{"memberId": 1234567,"пароль":"пароль"}'.

Где я ошибаюсь?


person Devi    schedule 17.02.2015    source источник


Ответы (1)


Если вы установили на свой компьютер с помощью npm или brew. Она не будет работать. Вам нужно скомпилировать casperjs из исходного кода, чтобы заставить его работать. У меня нет ссылки, но я также прочитал это с одного форума.

person Hasan    schedule 20.02.2015
comment
Спасибо @hasan. Это решило мою проблему. Я нашел эту тему на сайте casperJS github.com/n1k0/ casperjs/issues/196, что предполагает то же самое. Но никаких объяснений этому нет. - person Devi; 23.02.2015
comment
Получил объяснение этого загадочного поведения. Последний выпуск casperjs был выпущен 23 ноября 2013 года. Вероятно, именно его мы получим при загрузке через диспетчер пакетов. Однако поддержка публикации объектов JSON не была доступна до 20 февраля 2014 г. - person Devi; 27.02.2015