我的用户名和密码应该放在SOAP API的POST位置

时间:2019-01-24 04:57:53

标签: r api soap

我在下面将api调用放在一起。在这一点上,我什至不确定它是否正确。我需要在其中添加用户名和密码,但不确定在哪里。有关用户名和密码的任何建议,将不胜感激。

api调用的背景是它是通过邮递员发送给我的,我可以在其中运行它。我能够从邮递员那里拉回尸体,但是我需要在API调用中包含身份验证。

在此处输入代码

library(RCurl)

headerFields =
  c(Accept = "text/xml",
    'Content-Type' = "text/xml; charset=utf-8")

body = '<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.sitename.com/bizconnect/SBU">
<SOAP-ENV:Body>
<ns1:GetSBUApplicationData>
<ns1:Subscriber>
<ns1:SubCode>123456</ns1:SubCode>
</ns1:Subscriber>
<ns1:UserID>xxxxxx</ns1:UserID>
<ns1:ReferenceID>A</ns1:ReferenceID>
<ns1:ResponseVersion>010</ns1:ResponseVersion>
<ns1:Application>
<ns1:Id>G020D</ns1:Id>
<ns1:Name/>
<ns1:Key>
<ns1:Field>
<ns1:Id>00920000</ns1:Id>
<ns1:Name/>
<ns1:Value>900000095</ns1:Value>
</ns1:Field>
</ns1:Key>
</ns1:Application>
</ns1:GetSBUApplicationData>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>'

curlPerform(url = "https://stg1-ss1.sitename.com/bizconnect/SBU/service",
            httpheader = headerFields,
            postfields = body
)

1 个答案:

答案 0 :(得分:3)

好。目前,鉴于它在邮递员中可以正常工作,我将假定该服务正在使用基本身份验证运行。

在这种情况下,您无需在SOAP信封中包含身份验证详细信息,而是在HTTP级别进行身份验证。

建议尝试这样的事情;

curlPerform(url = "https://stg1-ss1.sitename.com/bizconnect/SBU/service",
        httpheader = headerFields,
        postfields = body, userpwd = "user:password")

有关更多详细信息,我建议您阅读JStatSoft RCurl文件的第4.2节,该文件位于:http://www.omegahat.net/RCurl/RCurlJSS.pdf

我不太喜欢在代码文件中包含凭据的inc公司,因此我也建议您阅读本文中有关如何将凭据外部化为单独的密码文件的指南。这样一来,您就不会最终无意中将凭据检查到版本控件中。