所有这些客户都位于我们的CRM,NetSuite中,我们希望我们的客户服务团队更新客户信息并将其分配给FBA角色(角色已添加到SharePoint中的组).
为此,我希望创建SOAP XML文件,NetSuite自己的开发语言SuiteScript可以使用它,它将发送SOAP请求,响应过程也可以使用.
例如:使用soapUI我正在构建以下XML:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:dir="http://schemas.microsoft.com/sharepoint/soap/directory/"><soapenv:header/> <soapenv:Body> <dir:GetUserInfo> <dir:userLoginname>myUsername</dir:userLoginname> </dir:GetUserInfo> </soapenv:Body></soapenv:Envelope>
问题是,当使用soapUI执行此XML时,我的XML响应是403 FORBIDDEN – Raw响应是:
http/1.1 403 ForbIDdenCache-Control: private,max-age=0Server: Microsoft-IIS/7.5SPRequestGuID: 36264ce4-9702-44bb-9693-23852a5e0c99X-SharePointHealthscore: 1X-Forms_Based_Auth_required: http://mySPserver/_layouts/login.aspxReturnUrl=/_layouts/Error.aspx&Source=%2f_vti_bin%2fusergroup.asmxX-Forms_Based_Auth_Return_Url: http://ec2-devmoss1/_layouts/Error.aspxX-MSDAVEXT_Error: 917656; Access denIEd. Before opening files in this location,you must first browse to the web site and select the option to login automatically.X-AspNet-Version: 2.0.50727X-Powered-By: ASP.NETMicrosoftSharePointTeamServices: 14.0.0.4762Date: Tue,19 Jul 2011 19:25:47 GMTContent-Length: 13403 FORBIDDEN
我猜我需要以某种方式使用XML中的凭据登录,但我该怎么做?我尝试在我的< soapenv:header>中使用它…
<soapenv:header> <h:BasicAuth xmlns:h="http://soap-authentication.org/basic/2001/10/" SOAP-ENV:mustUnderstand="1"> <name>user</name> <Password>password</Password> </h:BasicAuth> </soapenv:header>
但随后我的Raw响应成为:
http/1.1 400 Bad RequestCache-Control: privateServer: Microsoft-IIS/7.5X-AspNet-Version: 2.0.50727X-Powered-By: ASP.NETMicrosoftSharePointTeamServices: 14.0.0.4762Date: Tue,19 Jul 2011 19:43:12 GMTContent-Length: 0
任何人都可以建议如何正确地为这个或任何SharePoint Web服务方法形成XML SOAP调用,或者指向一个解释它的文章/问题(带答案)?我尝试使用谷歌搜索和浏览stackoverflow(当然),但我找不到我需要的信息/解决方案.
(抱歉这个很长的问题)
凯文
解决方法 在温暖,模糊的.Net世界……使用FBA访问SharePoint网站上的Web服务需要一些额外的工作.
在.Net中,它非常简单.实际上,有一篇包含代码示例的MSDN文章,所有文章都精确地指明了这一点.总之,您首先在Authentication.asmx上调用Login方法,并在将来的所有Web服务请求中使用返回的cookie.
外面.Net
一个黑暗和暴风雨的夜晚,我冒险进入非微软世界.无人区.如果没有.Net生成的Web服务代理,我们就会使用自己的SOAP消息与SharePoint Web服务进行通信.
我的饼干在哪里?
如果没有.Net代理,则不能像MSDN文章所建议的那样使用cookieContainer. Authentication.asmx对Login的描述显示以下SOAP响应:
响应XML只包含身份验证cookie的名称.实际的cookie在哪里? GIMME我的cookie !!!
获取cookie
事实证明,cookie是在SOAP标头中发送的.如果登录成功,响应的SOAP标头将如下所示:
上面的Set-cookie字段为我们提供了名为.ASPXAUTH的FBA cookie,值为987A98 …….
使用cookie
要将cookie用于Web服务请求,我们需要通过添加cookie字段将其包含在SOAP请求标头中:
您可以通过使用分号分隔名称/值对来包含多个cookie.设置.ASPXAUTH cookie后,您可以发送请求,并且应该正常返回响应.
在ISA线后面没有人的土地
可以类似地处理具有Forms身份验证的ISA服务器后面的SharePoint站点.不同之处在于我们必须从ISA服务器而不是SharePoint获取身份验证cookie.这可以通过POST到/cookieAuth.dll?logon网址来完成.我不会详细介绍,但要弄清楚使用的网址和查询字符串应该不难.
在原始博客消失然后再次出现之后我又发现了这一点.如果博客消失,这里为后代添加.
New blog location.
Author Bio
总结以上是内存溢出为你收集整理的Web服务 – SharePoint 2010:从NetSuite使用Web服务 – 403 Forbidden错误全部内容,希望文章能够帮你解决Web服务 – SharePoint 2010:从NetSuite使用Web服务 – 403 Forbidden错误所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)