Я пытаюсь использовать R скрипт для выполнения запроса SOAP. Ожидается xml ответ файла. Запрос POST возвращает ошибку 415
. Я изо всех сил пытаюсь сформулировать это прямо в R.
Я пытался в httr:
library(httr)
library(xml2)
library(RCurl)
headers = "{'content-type': 'text/xml'}" #Also tried'application/xml; charset=utf-8'}"
body = '<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GetGenericData xmlns="http://...">
<QueryMessage xmlns="http:.../...">
<Query>
<DataWhere xmlns="http://.../...">
<And>
<DataSet>ABC</DataSet>
<Dimension id="ABC">abc</Dimension>
</And>
</DataWhere>
</Query>
</QueryMessage>
</GetGenericData>
</soap:Body>
</soap:Envelope>'
#headers <- c('application/xml; charset=utf-8')
#names(headers) <- 'content-type'
response = POST("http://exampleWebService?op=GetGenericData",
config = list(add_headers(.headers = headers)) ,
body = body,
content_type(".xml"),
encode = 'raw',
accept_xml(),
type = 'application/soap+xml; charset=utf-8',
# content_type_xml(),
authenticate(":", ":", "ntlm"))
)
Тогда статус ответа на запрос будет ошибкой:
> response[["all_headers"]][[1]]
$status
[1] 401
> response[["all_headers"]][[2]]
$status
[1] 415
> http_type(response)
[1] "text/html"
> http_error(response)
[1] TRUE
>content(response)
No encoding supplied: defaulting to UTF-8.
{xml_document}
<html>
[1] <body><p>The server cannot service the request because the media type is unsupported.</p></body>
http_type (response) всегда будет возвращать [1] «text / html», независимо от того, как я изменил заголовок. Кажется, мой клиентский запрос не обрабатывается правильно на стороне сервера? Какой будет правильный заголовок / кодировка / тип контента ??? Любой намек?