Я пытаюсь создать запрос на мыло для входа в польский REGON API.Я попробовал довольно много способов, найденных в Интернете, но ни один из них не сработал.Основанный на API запрос на вход в систему имеет такую структуру xml:
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:ns="http://CIS/BIR/PUBL/2014/07">
<soap:Header xmlns:wsa="http://www.w3.org/2005/08/addressing">
<wsa:Action>http://CIS/BIR/PUBL/2014/07/IUslugaBIRzewnPubl/Zaloguj</wsa:Action>
<wsa:To>https://wyszukiwarkaregon.stat.gov.pl/wsBIR/UslugaBIRzewnPubl.svc</wsa:To>
</soap:Header>
<soap:Body>
<ns:Zaloguj>
<!--Optional:-->
<ns:pKluczUzytkownika>user_key</ns:pKluczUzytkownika>
</ns:Zaloguj>
</soap:Body>
</soap:Envelope>
Затем я попытался пропустить его через soupUI, но у меня это не сработало.Код XML, который работает для меня при использовании soapUI:
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:ns="http://CIS/BIR/PUBL/2014/07">
<soap:Header>
<To soap:mustUnderstand="1" xmlns="http://www.w3.org/2005/08/addressing">https://wyszukiwarkaregon.stat.gov.pl/wsBIR/UslugaBIRzewnPubl.svc</To>
</soap:Header>
<soap:Body>
<ns:Zaloguj>
<!--Optional:-->
<ns:pKluczUzytkownika>user_key</ns:pKluczUzytkownika>
</ns:Zaloguj>
</soap:Body>
</soap:Envelope>
Заголовки:
POST https://wyszukiwarkaregon.stat.gov.pl/wsBIR/UslugaBIRzewnPubl.svc HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: application/soap+xml;charset=UTF-8;action="http://CIS/BIR/PUBL/2014/07/IUslugaBIRzewnPubl/Zaloguj"
Content-Length: 606
Host: wyszukiwarkaregon.stat.gov.pl
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
Это код R, который я пробовал:
test <- httr::POST(url = "https://wyszukiwarkaregon.stat.gov.pl/wsBIR/UslugaBIRzewnPubl.svc",
body = upload_file("request_login.xml"),
httr::add_headers(c('Accept-Encoding' = 'gzip,deflate',
'Content-Type' = 'application/soap+xml;charset=UTF-8;action="http://CIS/BIR/PUBL/2014/07/IUslugaBIRzewnPubl/Zaloguj"',
'Host' = 'wyszukiwarkaregon.stat.gov.pl',
'Connection' = 'Keep-Alive')))
Где request_login.xml содержит код xml, переданный в soupUI.Возвращает http статус 500
Второй подход:
reader <- basicTextGatherer()
reader$reset()
curlPerform(url = "https://wyszukiwarkaregon.stat.gov.pl/wsBIR/UslugaBIRzewnPubl.svc",
httpheader=c("Accept-Encoding" = "gzip,deflate",
"Content-Type" = 'application/soap+xml;charset=UTF-8,action="http://CIS/BIR/PUBL/2014/07/IUslugaBIRzewnPubl/Zaloguj"'),
postfields = toJSON(list("pKluczUzytkownika" = "user_key")),
customrequest = "POST",
writefunction = reader$update,
verbose = T,
ssl.verifypeer = FALSE)
reader$value()
Этот возвращает html статус 415.
Мне нужно решение в R, не важно, какой пакет.