Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.05.2023, 19:42   #1
grobi_dex
Новичок
Джуниор
 
Регистрация: 23.05.2023
Сообщений: 5
По умолчанию Взаимодействие по API с тестовым контуром федресурса

Добрый день! Я написал код, используя инструкцию по подключению к тестовому контуру "https://fedresurs.ru/helps/bankrupt/Service_1.42.pdf". Но при отправке запроса, возвращается ошибка о недоступности службы. Я уже всю голову сломал, может уже закипаю. Какие ошибки. Прошу сильно не пинать за код ногами.
Хотел сделать, чтобы при вводе определенного ИНН отправлялся запрос на сервер и возвращались все сообщения с упоминанием введенного ИНН. Сейчас в коде отправляем ИНН, на сколько я понимаю используя метод GetDebtorByIdBankrupt, и возвращаем все сообщения с его упоминанием
Ссылку на код прикладываю ниже, буду благодарен за помощь.
"https://github.com/GrobiDex/MessageServiceDemo/tree/main"
grobi_dex вне форума Ответить с цитированием
Старый 23.05.2023, 21:58   #2
AnToHa-KiLL
Пользователь
 
Регистрация: 07.02.2008
Сообщений: 16
По умолчанию

Может быть проблема в том что Вы неправильно подключаетесь к службе?
Попробуйте вот так:
Код:
from zeep import Client
from zeep.wsse import UsernameToken

# Задаем параметры
webServiceUrl = 'https://services.fedresurs.ru/Bankruptcy/MessageServiceDemo/WebService.svc?wsdl'
login = 'demowebuser'
password = 'Ax!761BN'


# Устанавливаем заголовок для подключения к сервису
client = Client(webServiceUrl, wsse=UsernameToken(login, password))

# Функция для проверки и очистки введенного ИНН
def process_inn():
    while True:
        inn = input('Введите ИНН (от 10 до 15 цифр): ')
        inn = ''.join([ch for ch in inn if ch.isdigit()]) # Удаление всех символов из строки, оставление только цифр
        if 10 <= len(inn) <= 15:
            return inn
        print('Введите число, состоящий из 10-15 цифр')

inn = 125986032597 # Тестовый Инн

# Отправляем запрос на сервис и выводим результат
try:
    response = client.service.GetDebtorByIdBankrupt(inn)
    if response.Status == 'success':
        for message in response.Messages:
            print('MessageGUID:', message.MessageGUID)
            print('PublishDate:', message.PublishDate)
            print('MessageInfo:', message.MessageInfo)
            print('-' * 20)
        print('Авторизация прошла успешно')
    else:
        print('Ошибка авторизации: ', response.ErrorMessage)
except Exception as e:
    print(f'Error {e}: {e.args}')
AnToHa-KiLL вне форума Ответить с цитированием
Старый 23.05.2023, 22:13   #3
grobi_dex
Новичок
Джуниор
 
Регистрация: 23.05.2023
Сообщений: 5
По умолчанию

К сожалению нет, все равно не проходит авторизацию с ошибкой 401
grobi_dex вне форума Ответить с цитированием
Старый 23.05.2023, 22:40   #4
AnToHa-KiLL
Пользователь
 
Регистрация: 07.02.2008
Сообщений: 16
По умолчанию

Вот так вроде не возвращает 401:
Код:
import requests.auth
from zeep import Client
from requests import Session
from requests.auth import HTTPDigestAuth
from zeep.transports import Transport


# Задаем параметры
webServiceUrl = 'https://services.fedresurs.ru/Bankruptcy/MessageServiceDemo/WebService.svc?wsdl'
username = 'demowebuser'
password = 'Ax!761BN'


# Устанавливаем заголовок для подключения к сервису
session = Session()
session.auth = requests.auth.HTTPDigestAuth(username, password)
client = Client(webServiceUrl, transport=Transport(session=session))

# Функция для проверки и очистки введенного ИНН
def process_inn():
    while True:
        inn = input('Введите ИНН (от 10 до 15 цифр): ')
        inn = ''.join([ch for ch in inn if ch.isdigit()]) # Удаление всех символов из строки, оставление только цифр
        if 10 <= len(inn) <= 15:
            return inn
        print('Введите число, состоящий из 10-15 цифр')

inn = 125986032597 # Тестовый Инн

# Отправляем запрос на сервис и выводим результат
try:
    response = client.service.GetDebtorByIdBankrupt(inn)
    if response.Status == 'success':
        for message in response.Messages:
            print('MessageGUID:', message.MessageGUID)
            print('PublishDate:', message.PublishDate)
            print('MessageInfo:', message.MessageInfo)
            print('-' * 20)
        print('Авторизация прошла успешно')
    else:
        print('Ошибка авторизации: ', response.ErrorMessage)
except Exception as e:
    print(f'Error {e}: {e.args}')

P.S. Только теперь Вы получаете ошибку "Неверный формат сообщения.: ('Неверный формат сообщения.',)" =)))

Последний раз редактировалось AnToHa-KiLL; 23.05.2023 в 22:42.
AnToHa-KiLL вне форума Ответить с цитированием
Старый 23.05.2023, 22:46   #5
grobi_dex
Новичок
Джуниор
 
Регистрация: 23.05.2023
Сообщений: 5
По умолчанию

# Отправляем запрос на сервис и выводим результат
try:
response = client.service.GetDebtorByIdBankrup t(inn)
if response.Status == 'success':
for message in response.Messages:
print('MessageGUID:', message.MessageGUID)
print('PublishDate:', message.PublishDate)
print('MessageInfo:', message.MessageInfo)
print('-' * 20)
print('Авторизация прошла успешно')
else:
print('Ошибка авторизации: ', response.ErrorMessage)
except Exception as e:
print(f'Error {e}: {e.args}')[/CODE]

мне кажется или проблема в отправке этого запроса "response = client.service.GetDebtorByIdBankrup t(inn)"?

мне кажется с самим методом напортачил, взглянешь инструкцию "https://fedresurs.ru/helps/bankrupt/Service_1.42.pdf", этот метод на 16 странице, параметр "inn" чую не туда пихаю
grobi_dex вне форума Ответить с цитированием
Старый 23.05.2023, 22:49   #6
AnToHa-KiLL
Пользователь
 
Регистрация: 07.02.2008
Сообщений: 16
По умолчанию

Цитата:
Сообщение от grobi_dex Посмотреть сообщение
# Отправляем запрос на сервис и выводим результат
try:
response = client.service.GetDebtorByIdBankrup t(inn)
if response.Status == 'success':
for message in response.Messages:
print('MessageGUID:', message.MessageGUID)
print('PublishDate:', message.PublishDate)
print('MessageInfo:', message.MessageInfo)
print('-' * 20)
print('Авторизация прошла успешно')
else:
print('Ошибка авторизации: ', response.ErrorMessage)
except Exception as e:
print(f'Error {e}: {e.args}')[/CODE]

мне кажется или проблема в отправке этого запроса "response = client.service.GetDebtorByIdBankrup t(inn)"?

мне кажется с самим методом напортачил, взглянешь инструкцию "https://fedresurs.ru/helps/bankrupt/Service_1.42.pdf", этот метод на 16 странице, параметр "inn" чую не туда пихаю
Попробую, но ничего не обещаю.
AnToHa-KiLL вне форума Ответить с цитированием
Старый 23.05.2023, 23:30   #7
AnToHa-KiLL
Пользователь
 
Регистрация: 07.02.2008
Сообщений: 16
По умолчанию

А ИНН точно правильный вбиваете? Если к примеру вбить ИНН 125986, то апи отдаст другую ошибку как "Не найден должник по идентификатору 125986", а это означает что метод работает=)
Странно, метод возвращает ошибку если символов больше 9 может быть как-то некорректно передается большое число...

P.S. В общем с отправкой фигня какая-то, он и строку принимает как число.

Последний раз редактировалось AnToHa-KiLL; 23.05.2023 в 23:51.
AnToHa-KiLL вне форума Ответить с цитированием
Старый 24.05.2023, 00:12   #8
grobi_dex
Новичок
Джуниор
 
Регистрация: 23.05.2023
Сообщений: 5
По умолчанию

А разве и не должно передаваться число в запрос?
grobi_dex вне форума Ответить с цитированием
Старый 24.05.2023, 09:54   #9
AnToHa-KiLL
Пользователь
 
Регистрация: 07.02.2008
Сообщений: 16
По умолчанию

Цитата:
Сообщение от grobi_dex Посмотреть сообщение
А разве и не должно передаваться число в запрос?
Согласно документации да.
AnToHa-KiLL вне форума Ответить с цитированием
Старый 24.05.2023, 10:03   #10
AnToHa-KiLL
Пользователь
 
Регистрация: 07.02.2008
Сообщений: 16
По умолчанию

Может проблема на стороне API федресурса, попробуйте написать им в техподдержку. Я попробовал все что мог со своей стороны, отладчиком смотрел в запрос уходит INT. Ну или может кто тут более опытней подскажет в чем проблема. С подключением к API я Вам помог.

Последний раз редактировалось AnToHa-KiLL; 24.05.2023 в 10:09.
AnToHa-KiLL вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с тестовым заданием polin11 Python 1 09.04.2018 00:54
Работа с контуром OpenCV JinAnton Visual C++ 0 11.03.2013 00:10
Составить блок-схемы с псевдокодом, и тестовым примером. ЕленаШадрина Помощь студентам 0 27.12.2012 16:18
Взаимодействие C# и 1с Sparky Свободное общение 1 05.02.2010 04:31
взаимодействие с QIP Toxa Общие вопросы Delphi 5 20.06.2008 19:39