Помогите перевести запрос с PHP на Python

bratslav

Новичок
Пользователь
Июн 15, 2020
3
0
1
Вот пример отправки СМС на php. Помогите перевести это на Python

PHP:
<?php
$text = iconv('windows-1251', 'utf-8', htmlspecialchars('��������, ��� ����� ����� ������ ����������� ������� � �������, �� �� ����������� ����� �������� � �� �������� ��.'));
$description = iconv('windows-1251', 'utf-8', htmlspecialchars('��� ������ ��������'));
$start_time = 'AUTO'; // ��������� ���������� ��� ������ ���� � �����  � ������� YYYY-MM-DD HH:MM:SS
$end_time = 'AUTO'; // ������������� ���������� �������� ��� ������ ���� � �����  � ������� YYYY-MM-DD HH:MM:SS
$rate = 1; // �������� �������� ��������� (1 = 1 ��� ������). ��������� ��� ��������� ������������ ������ � ������������ ���������.
$lifetime = 4; // ���� ����� ��������� 4 ����
$recipient = '380501234567';
$user = 'user'; // ��� ��� ����� � ������������� ������� ��� ����� +. ������: 380501234567
$password = 'password'; // ��� ������

$myXML      = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
$myXML     .= "<request>"."\n";
$myXML     .= "<operation>SENDSMS</operation>"."\n";
$myXML     .= '      <message start_time="'.$start_time.'" end_time="'.$end_time.'" lifetime="'.$lifetime.'" rate="'.$rate.'" desc="'.$description.'">'."\n";
$myXML     .= "      <body>".$text."</body>"."\n";
$myXML     .= "      <recipient>".$recipient."</recipient>"."\n";
$myXML     .=  "</message>"."\n";
$myXML     .= "</request>";

$ch = curl_init();
curl_setopt($ch, CURLOPT_USERPWD , $user.':'.$password);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_URL, '[URL='http://sms-fly.com/api/api.noai.php);']http://sms-fly.com/api/api.noai.php');[/URL]
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: text/xml", "Accept: text/xml"));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $myXML);
$response = curl_exec($ch);
curl_close($ch);

// ����� ���������� � ������� ��� �������� ������ �������� � textarea
echo '<textarea spellcheck="false" name="111" rows="25" cols="150">';
echo $response;
echo '</textarea>';
?>
 
Последнее редактирование модератором:

Student

throw exception
Команда форума
Администратор
Апр 2, 2020
195
103
43
Москва
Вот статья как отправить из Python sms: http://python-3.ru/page/send-sms-python
 

bratslav

Новичок
Пользователь
Июн 15, 2020
3
0
1
Вот статья как отправить из Python sms: http://python-3.ru/page/send-sms-python
Во первых там висит какая-то реклама закрывающая весь контент.
Во вторых в моем случает используется XML, а в статье мелькает сквозь рекламу json
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Вот пример отправки СМС на php. Помогите перевести это на Python
Вот так примерно это будет выглядеть на python:
Python:
import requests


def htmlspecialchars(text):
    return (
        text.replace("&", "&amp;").
        replace('"', "&quot;").
        replace("<", "&lt;").
        replace(">", "&gt;")
    )

# text = htmlspecialchars('��������, ��� ����� ����� ������ ����������� ������� � �������, �� �� ����������� ����� �������� � �� �������� ��.')
# text = text.decode('cp1251').encode('utf-8')

# description = htmlspecialchars('��� ������ ��������')
# description = description.decode('cp1251').encode('utf-8')

text = 'text'
description = 'description'
start_time = 'AUTO'
end_time = 'AUTO'
rate = 1
lifetime = 4
recipient = '380501234567'
user = 'user'
password = 'password'

data = f'''
    <?xml version="1.0" encoding="utf-8"?>
    <request>
    <operation>SENDSMS</operation>
        <message start_time={start_time} end_time={end_time} lifetime={lifetime} rate={rate} desc={description}>
            <body>{text}</body>
            <recipient>{recipient}</recipient>
        </message>
    </request>
'''

url = 'http://sms-fly.com/api/api.noai.php'
headers = {'Content-Type': 'text/xml', 'Accept': 'text/xml'}
response = requests.post(url, headers=headers, data=data)
print(response.status_code)
s = response.content.decode('utf-8')
print(s)
Текст и описание заменил на строки, так как если указывать их в скрипте, то перекодировать не нужно (в python3 по умолчанию строки в utf-8).
 

bratslav

Новичок
Пользователь
Июн 15, 2020
3
0
1
Спасибо большое.
Только непонятно где в запрос передается имя пользователя и пароль?
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Спасибо большое.
Только непонятно где в запрос передается имя пользователя и пароль?
Попробуйте так:
Python:
response = requests.post(url, headers=headers, data={'user': user, 'password': password}, files=data)
 

Форум IT Специалистов