Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > pushall


Автор: od0201 12.11.2018, 12:33
Есть мобильный сервис pushall, аналог pushover, но бесплатный. Отсылаю сам себе уведомления о важных событиях через API.
GET прекрасно работает, а вот POST отвечает "{"error":"cant find this type"}"

Код

use HTTP::Request;
use LWP::UserAgent;
my $url = "https://pushall.ru/api.php";
my $id="81400";
my $key="18d4b5912beab9267d9a431cb2c6хххх";

my $json = '{"type":"self","id":"'.$id.'","key":"'.$key.'","message":"test","title":"title"}';
my $req = HTTP::Request->new( 'POST', $url );
$req->header( 'Content-Type' => 'application/json' );
$req->content( $json );
my $lwp = LWP::UserAgent->new;
$response1=$lwp->request( $req );


в качестве примера есть код на PHP (я в нем ноль, но на работоспособность проверил, рабочий)
Код

$ch = curl_init();
curl_setopt_array($ch, array(
CURLOPT_URL => "https://pushall.ru/api.php",
CURLOPT_POSTFIELDS => array(
    "type" => "self",
    "id" => "1",
    "key" => "0077f8aba41b8f6e0030e9b2b0b23f7b",
    "text" => "Тестовое сообщение",
    "title" => "Заголовок"
  ),
  CURLOPT_RETURNTRANSFER => true
));
$return=json_decode(curl_exec($ch)); //получить ответ или ошибку
curl_close($ch);

Автор: arto 12.11.2018, 13:38
print $json

Автор: od0201 13.11.2018, 02:58
Цитата(arto @  12.11.2018,  13:38 Найти цитируемый пост)
print $json 

да, там была описка, которую я допустил при составлении поста, исправил, но ситуация не изменилась

Автор: alezzz 13.11.2018, 12:30
а обычным post из LWP::UserAgent вместо HTTP::Request не пробовали?

Автор: arto 13.11.2018, 15:43
поменяйте https на http и посмотрите, что там шлётся в обоих случаях.

Добавлено через 5 минут и 40 секунд
как я понял, CURLOPT_POSTFIELDS не относится к JSON, а скорре к multipart/form-data

Автор: od0201 13.11.2018, 19:01
Цитата

поменяйте https на http и посмотрите, что там шлётся в обоих случаях.

301 Moved Permanently

Цитата

а обычным post из LWP::UserAgent вместо HTTP::Request не пробовали?

Пробовал, Работает  smile 
Всем спасибо
Всем рекомендую PushAll. Нет \n, но бесплатен. Для себя использовал бы PushOver за 5 $?, но так как задача была поставлена подключить большое количество пользователей, у которых, как правило, даже кредитка не подключена для оплаты приложения, то это вариант прекрасен.
Код

sub test{
use LWP::UserAgent;
my $url = "https://pushall.ru/api.php";
my $id="81400";
my $key="18d4b5912beab9267d9a431cb2c6ef00";

my $ua = LWP::UserAgent->new();
my $response = $ua->post( $url, {
 type=> 'self',
 id=> $id,
 key=> $key,
 text=>'текст',
 title=>'заглавие'
} );
print $response->decoded_content();
}


Добавлено через 31 секунду
 smile 

Автор: arto 14.11.2018, 07:30
Цитата

301 Moved Permanently


но запрос должен быть виден

Автор: bezludni 7.1.2019, 21:35
 smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)