无法在R中存储Web服务响应
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法在R中存储Web服务响应相关的知识,希望对你有一定的参考价值。
我有一个SOAP请求,在Rstudio中获得正确的响应,如下面的屏幕截图所示。用于请求响应的代码是
library(RCurl)
headerFields =
c(Accept = "text/xml",
'Content-Type' = "text/xml; charset=utf-8",
SOAPAction = "")
body = '<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sch="http://www.xxxxx.com/esotservice/schema">
<S:Header/>
<S:Body>
<sch:OwnerOnlyInquiryRequest>
<sch:RequestHeader>
<sch:ClientSystem>ePRS</sch:ClientSystem>
</sch:RequestHeader>
<sch:RequestParameterList>
<sch:RequestParam>12174391</sch:RequestParam>
</sch:RequestParameterList>
<sch:RequestType>CESEID</sch:RequestType>
<sch:PeckingOrder>Pricing</sch:PeckingOrder>
<sch:ViewType>Pricing</sch:ViewType>
</sch:OwnerOnlyInquiryRequest>
</S:Body>
</S:Envelope>'
R <- curlPerform(url = "http://slsesotdevt1.ute.xxxx.com:10149/esot/esotservice.wsdl",
httpheader = headerFields,
postfields = body, verbose=TRUE)
我在RStudio得到的回应是
我的目的是将webservice响应(图像中的黑色文本)存储到代码中的对象R中,对象类为XML,这样我就可以使用XML包来进一步处理数据。但是,当我说print(R)时,我得到的唯一回应是
在搜索网络后,响应0表示一切正常。但有没有办法在R中实际存储响应?如果我复制粘贴Rstudio中第一个图像中出现的黑色文本并将其提供给xml函数,如xmlTreeParse,它将被正确处理。
答案
您需要使用basicTextGatherer获取响应正文。
例如(取自https://cran.r-project.org/web/packages/RCurl/RCurl.pdf):
library(RCurl)
headerFields =
c(Accept = "text/xml",
'Content-Type' = "text/xml; charset=utf-8",
SOAPAction = "")
body = '<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sch="http://www.xxxxx.com/esotservice/schema">
<S:Header/>
<S:Body>
<sch:OwnerOnlyInquiryRequest>
<sch:RequestHeader>
<sch:ClientSystem>ePRS</sch:ClientSystem>
</sch:RequestHeader>
<sch:RequestParameterList>
<sch:RequestParam>12174391</sch:RequestParam>
</sch:RequestParameterList>
<sch:RequestType>CESEID</sch:RequestType>
<sch:PeckingOrder>Pricing</sch:PeckingOrder>
<sch:ViewType>Pricing</sch:ViewType>
</sch:OwnerOnlyInquiryRequest>
</S:Body>
</S:Envelope>'
h = basicTextGatherer()
R <- curlPerform(url = "http://slsesotdevt1.ute.xxxx.com:10149/esot/esotservice.wsdl",
httpheader = headerFields,
postfields = body, verbose=TRUE,
writefunction = h$update)
body <- h$value()
以上是关于无法在R中存储Web服务响应的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 jQuery 在 html 中获取来自 REST Web 服务的 json 响应