Я хочу сделать панель управления всеми устройствами Goips из одного места! Мой Nodejs сервер отправляет запросы на эти устройства с базовым c заголовком авторизации. Сервер извлекает данные HTTP или XML. Все работает. Но когда я отправляю запрос на публикацию с formData, я также получаю ответ HTML, но настройки Goip не меняются, а иногда даже сбрасываются.
Я использую форму реагирования с избыточностью. Когда я отправляю, я преобразую объект со всеми необходимыми значениями формы в FormData и отправляю на мой сервер.
Запрос представляет собой обертку для топора ios
const handlePreferenceSubmit = (data) => {
let formValues = [];
for( name in data ) {
formValues.push( encodeURIComponent( name ) + '=' + encodeURIComponent( data[name] ) );
}
let formData = formValues.join( '&' ).replace( /%20/g, '+' );
let body = {
goipId: goip.id,
formData
}
Request(Api.route('config') + '/set', body, 'auth', 'post', '#preloader')
.then(response => console.log(response))
.catch(err => console.log(err))
}
Затем Мой сервер отправляет данные формы на устройство Goip с базовой авторизацией c.
setConfig(req, res) {
let { goipId, formData } = req.body;
this._table.findByPk(goipId).then(goip => {
let filters = {}
filters.type = 'ata_in_setting';
filters = Helper.encodeURI(filters, "?");
let pass = decryption(unescape(goip.password));
let headers = Headers.goipAuthForm(goip.login, pass);
if(!headers) return res.status(500).json({ error: 'goip has no login or password' })
Request(`${goip.ip}/default/en_US/config.html${filters}`, formData, headers, 'POST').then(response => {
res.status(200).json(response);
}).catch(err => res.status(500).json({ "error": err }));
}).catch(err => {
console.log('response err', err);
res.status(500).json({
"description": "Can not access Admin Board",
"error": err
});
})
}
И я понятия не имею, в чем проблема ... Я получаю ответ, но настройки не меняются. В веб-интерфейсе goip просто отправьте форму с действием. Я не понимаю, как отправить форму с моего сервера.