Уведомления

Группа в Telegram: @pythonsu

#1 Май 23, 2023 19:31:09

grobi_dex
Зарегистрирован: 2023-05-22
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Взаимодействие по API с тестовым контуром федресурса

py.user.next
Да я смотрю, ты уже в собственном коде запутался. Просто надо учиться пользоваться системой контроля версий. Коммиты не должны быть хаотичными. Каждый коммит должен быть со смыслом и полностью описан. Бывает так, что коммиты перекидываются потом, меняется их порядок, делается их слияние и так далее. Поэтому каждый коммит должен быть максимально независим от соседних коммитов.
xam1816
'participant.type': ‘Company’
Спасибо вам обоим огромное, обе версии работают, однако я затупок уровня бог
Я осознаю, что мой код больше похож на случайные удары по клавиатуре, но я только в начале пути и только начал получать навыки в этой среде.
С git буду дружить, обещаю
Однако у меня еще один вопрос, все запросы с этого ресурса можно отправлять и получать ответы, я уже сделал за ночь обработчики ответов с выводом нужной инфы в необходимом виде, но сегодня прислали письмо счастья с федресурса, в котором сказали, что сервер не тот да и вообще инструкция к другому ресурсу в системе, хотя изначально сами отправили меня в статью, которую я прикладывал в первом сообщении.
Сейчас инструкция такого рода "https://fedresurs.ru/helps/bankrupt/Service_1.42.pdf“.
Код который у меня выходит тут ”https://github.com/GrobiDex/MessageServiceDemo"
Смысл тот же, отправляем ИНН, на сколько я понимаю используя метод GetDebtorByIdBankrupt, и возвращаем все сообщения с его упоминанием
Я только разобрался с предыдущим кодом с вашей помощью и понял логику, как еще свалили

Отредактировано grobi_dex (Май 23, 2023 19:33:39)

Офлайн

#2 Май 23, 2023 22:22:41

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9844
Репутация: +  853  -
Профиль   Отправить e-mail  

Взаимодействие по API с тестовым контуром федресурса

grobi_dex
я уже сделал за ночь обработчики ответов с выводом нужной инфы в необходимом виде
Они работали или ты их просто сделал?
Я смотрю ты полагаешься на zeep и его чудесные возможности. Но сам zeep не внушает доверия, так как в нём было много ошибок раньше. Не знаю, как сейчас там дело обстоит. Но именно из-за этих ошибок мне пришлось от него полностью избавляться, когда я делал роботов для мессенджеров (они тоже общались через SOAP с разными сервисами через команды). Когда я анализировал в то время то, что он по факту передаёт в запросе, я обнаружил, что он сильно много всякого убирает из того, что нужно, как будто этого нет и не было, хотя в запросе всё это было указано.

Так что сделай функцию запроса в питоне, запиши в неё XML-код напрямую и посылай этот XML-код на сервер через requests или urllib, и тогда, скорее всего, что-нибудь и получится. По крайней мере, ты будешь знать точно, что ничто туда не влазит по дороге и не манглит код.

А так, вообще, “удобство” zeep'а в тот момент я сильно оценил, когда провозился с ним впустую пять часов и потом минут за двадцать сделал всё на голых запросах, избавившись от него.



Отредактировано py.user.next (Май 23, 2023 22:28:33)

Офлайн

#3 Май 23, 2023 22:31:53

grobi_dex
Зарегистрирован: 2023-05-22
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Взаимодействие по API с тестовым контуром федресурса

py.user.next
Они работали или ты их просто сделал?
О да, они работали. Я уже потирал лапки, что это закончилось и можно лишь потом сменить демо-доступ на обычный и отправлять запросы, но не тут то было, все по новой.
Я бы с удовольствием исключил zeep, только компетенции у меня пока, как у горошинки. А сроки уже “вчера”, как обычно. Мне лишь бы запрос улетал и хоть что-то возвращалось.

Офлайн

#4 Май 23, 2023 22:50:29

grobi_dex
Зарегистрирован: 2023-05-22
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Взаимодействие по API с тестовым контуром федресурса

py.user.next
сам zeep не внушает доверия
Так, у меня даже с zeep получилось кажется пройти этап авторизации, сейчас выдает ошибку “Error Неверный формат сообщения.: ('Неверный формат сообщения.',)” мне кажется или проблема в отправке этого запроса “response = client.service.GetDebtorByIdBankrup t(inn)”?
я с самим методом напортачил, взглянешь инструкцию "https://fedresurs.ru/helps/bankrupt/Service_1.42.pdf“, этот метод на 16 странице, параметр ”inn" чую не туда пихаю

Офлайн

#5 Май 24, 2023 00:20:21

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9844
Репутация: +  853  -
Профиль   Отправить e-mail  

Взаимодействие по API с тестовым контуром федресурса

grobi_dex
О да, они работали.
Вот отправь сюда то, что у тебя работало. Убедись сначала, что оно работает, что там используется zeep и что ты всё можешь прочитать в ответе.
Потому что я подозреваю zeep.

grobi_dex
Так, у меня даже с zeep получилось кажется пройти этап авторизации
Оно проходит авторизацию, но уже требует дебильной дописки wsdl, которая не указана в спецификации. Не нужна она по спецификации. Но без неё оно не открывается через zeep.

Вот у тебя в коде стоит вот такая фигня
  
webServiceUrl = 'https://services.fedresurs.ru/Bankruptcy/MessageServiceDemo/WebService.svc?wsdl'
А в спецификации стоит вот такая фигня
https://services.fedresurs.ru/Bankruptcy/MessageServiceDemo/WebService.svc
То есть ты уже полез менять это.

grobi_dex
взглянешь инструкцию
Давай, соблюдай инструкцию. Никакой zeep там не указан, составляй голый запрос в виде XML-кода. Либо сиди сам и трать свои пять часов на то, чтобы обнаружить там в конце, что zeep там просто что-то вырезает по своему желанию и всё. Я уже тратил, я понял все прелести zeep и не считаю его больше облегчающим средством, на котором так коротко и красиво можно записывать SOAP-запросы. Лучше написать длиннющий XML-код и передать его просто простой передачей. Тогда всё работает.

Говоришь “оно запускалось”, что запускалось?



Отредактировано py.user.next (Май 24, 2023 00:24:36)

Офлайн

#6 Май 24, 2023 11:57:48

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1348
Репутация: +  118  -
Профиль   Отправить e-mail  

Взаимодействие по API с тестовым контуром федресурса

grobi_dex
Сейчас инструкция такого рода "https://fedresurs.ru/helps/bankrupt/Service_1.42.pdf“.
такая себе инструкция, мало что из нее понял, даже пример приведенный в конце пришлось переделать, чтобы что-то получить
  
from bs4 import BeautifulSoup
import requests
from requests.auth import HTTPDigestAuth
url = 'https://services.fedresurs.ru/Bankruptcy/MessageServiceDemo/WebService.svc'
username = 'demowebuser'
password = 'Ax!761BN'
session = requests.Session()
auth = HTTPDigestAuth(username, password)
resp = session.get(url, auth=auth)
if resp.ok:
    print('авторизация ok')
else:
    print(f'нет доступа {resp.status_code}')
xml_data = '''<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <GetMessageIds xmlns="http://tempuri.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xsi:schemaLocation="http://tempuri.org/ ">
        <startDate>2014-12-14T00:00:00</startDate>
        <endDate>2015-01-14T00:00:00</endDate>
    </GetMessageIds>
</s:Body>
</s:Envelope>'''
headers = {'Content-Type': 'text/xml',
           'soapAction': "http://tempuri.org/IMessageService/GetMessageIds"}
r = session.post(url + '?wsdl', data=xml_data, headers=headers, auth=auth)
if r.ok:
    soup = BeautifulSoup(r.text, 'xml')
    print([i.text for i in soup.find_all('int')])
else:
    print(f'error {r.status_code}')

 
авторизация ok
['477635', '474130', '474123', '467547', '473224', '466549', '466547', '466543', '466538', '466525', '466521', '466560', '466562', '465309', '464816', '462389', '462372', '461871', '461857', '460175', '458217', '458213']

Process finished with exit code 0

Отредактировано xam1816 (Май 24, 2023 12:12:53)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version