Drupal влизане чрез Rest сървър

Разработвам уебсайт, който използва външен Drupal за статиите и страниците. Целта е да се показват статиите в уебсайт, като се използва само html/css/js.

Добавих модул Rest Server към back-end на drupal, за да мога да правя http заявки за извличане на статиите. Сега извличането на статиите от back-end на drupal работи (вижте кода по-долу). Restdrupal е името на моя сайт, а restendpoint е името на крайната точка на сървъра Rest (Captian Obvious)

$.ajax({
    url : "http://127.0.0.1/restdrupal/restendpoint/node.json",
    dataType : 'json',
    success : function(data) {
              //further code
    }
});

Сега искам клиентът ми да може да добавя някои статии, така че първо трябва да вляза. От дни търся в интернет и опитах милиони неща, но нищо не ми помогна. Последното нещо, което опитах (с jQuery) беше това:

$.ajax({
    url : "http://127.0.0.1/restdrupal/restendpoint/user/login",
    dataType:'application/json',
    type : 'PUT',
    data : 'Name=myusername&Pass=mypassword',
    success : function(data) {
        //further code
    },
    error:function(data){
           //Error handling
    }
});

Също така промених PUT на POST...

Отговорът, който получавам, е (без значение какво правя) същият:

406 Not Acceptable: Unsupported request content type application/x-www-form-urlencoded

Може ли някой да ми помогне? С уважение, Ceetn


person Ceetn    schedule 16.12.2011    source източник
comment
някой може ли да изясни - това drupal 6 или 7 ли е и услуги 2 или 3 ли е? та!   -  person ErichBSchulz    schedule 24.02.2013
comment
Drupal 7 и услуги 3.   -  person Ceetn    schedule 25.02.2013


Отговори (3)


Трябва да активирате application/x-www-form-urlencoded тип съдържание на вашата крайна точка на услугата.

Направете следното: Услуги -> Редактиране на ресурси -> изберете раздела "Сървър" -> активирайте "application/x-www-form-urlencoded" и това е всичко

person Duong    schedule 13.02.2012
comment
Това беше и моят проблем, благодаря за публикацията! Това е първият път, когато настройвам услуги и напълно пренебрегнах тази настройка. - person RevNoah; 25.07.2013
comment
Как да разрешите удостоверяване от различен URL? Ако услугата ми е на A.com и искам да вляза от B.com възможно ли е и как? Опитах да използвам crossDomain: TRUE в $.ajax и JSONP, но ми дайте съобщение access denied for anonymous user - person Ashwin Parmar; 09.06.2014

Сам намерих решението. За интересуващите се:

$.ajax({
    url : "http://127.0.0.1/restdrupal/restpoint/user/login.json",
    type : 'post',
    data : 'username=' + encodeURIComponent(username) + '&password=' + encodeURIComponent(password),
    dataType : 'json',
    error : function(data) {
            //error code
    },
    success : function(data) {
        //success code
    }
});
person Ceetn    schedule 19.12.2011
comment
Кодът по-горе работи добре, когато предавам потребителско име и парола на url на user/login.json. Въпросът ми е, когато използваме jQuery вместо PHP/CURL, автоматично се добавя стойност на бисквитка към браузъра? В моя случай горният код работи добре и ме влязох в сайта успешно. Но когато използвам същото, използвайки PHP/CURL заявка, това ще ми даде успешен отговор със Sess ID и стойност, но мисля, че не се съхранява като бисквитка и не ме влиза в сайта? Някаква помощ - person Ashwin Parmar; 11.11.2013

може да се наложи да активирате този тип анализатор?

вижте тази връзка. може би ще ви помогне да получите някои идеи https://drupal.stackexchange.com/questions/3207/simple-rest-request-to-create-nodes

person au_stan    schedule 16.12.2011