1

Я работаю над расширением Gnome-shell, и я застрял в использовании супа, чтобы связаться с сервером. В принципе, я хочу отправить запрос POST, который может быть выполнен после аутентификации. Если аутентификация, ответ, если содержимое JSON, а если не аутентифицировано, то контент ответа - HTML, приветственная страница сайта. Вот мой код до сих пор:Суп - запрос POST с аутентификацией

let session = new Soup.SessionSync(); 
 
session.user_agent = Me.metadata.uuid; 
 
let authParams = {'login': 'xxx', 'password': 'xxx'}; 
 
let message = Soup.form_request_new_from_hash('POST', authURL, authParams); 
 
session.queue_message(message, Lang.bind(this, function(session, response) { 
 
    global.log('AUTHENTICATE: ' + response.status_code + ' - ' + response.reason_phrase); 
 
    global.log('AUTHENTICATE: ' + response.response_body.data); 
 

 
    let msg = Soup.form_request_new_from_hash('POST', url, params); 
 
    session.queue_message(msg, Lang.bind(this, function(session, response) { 
 
\t global.log(response.status_code + ' - ' + response.reason_phrase); 
 
\t global.log(response.response_headers.get_one('content-type')); 
 
    })); 
 
}));

Я могу видеть, что запрос аутентификации работает хорошо, в соответствии с ответом, но второй запрос возвращает мне содержание HTML. Я проверил в SoapUI, отправив эти 2 запроса, и он работает хорошо (я получаю некоторый контент JSON), когда я устанавливаю параметр «Ведение сеанса HTTP».

Поэтому я думаю, что мой session не сохраняет аутентификацию при отправке второго запроса. Знаете ли вы, чего мне не хватает здесь, чтобы сохранить аутентификацию в моей сессии?

я альтернативно пытался использовать некоторые советы по следующей ссылке, но без успеха: Consume a webservice with basic authentication using Soup

Заранее спасибо за вашу помощь.

ответ

0

let session = new Soup.SessionSync(); 
 
session.user_agent = Me.metadata.uuid; 
 
let authParams = {'login': 'xxx', 'password': 'xxx'}; 
 
let message = Soup.form_request_new_from_hash('POST', authURL, authParams); 
 
session.queue_message(message, Lang.bind(this, function(session, response) { 
 
    global.log('AUTHENTICATE: ' + response.status_code + ' - ' + response.reason_phrase); 
 
    global.log('AUTHENTICATE: ' + response.response_body.data); 
 

 
    let msg = Soup.form_request_new_from_hash('POST', url, params); 
 
    session.queue_message(msg, Lang.bind(this, function(session, response) { 
 
\t global.log(response.status_code + ' - ' + response.reason_phrase); 
 
\t global.log(response.response_headers.get_one('content-type')); 
 
    })); 
 
}));