【问题标题】:How to access XML file on employee sharepoint portal?如何访问员工共享点门户上的 XML 文件?
【发布时间】:2018-04-29 07:00:25
【问题描述】:

身体
嗨,大家好。如果可以的话,我会很简短。
我用 C# 制作了这个应用程序,该应用程序进入我的员工门户,并使用 Web 浏览器控件每 30 分钟自动为我获取轮班,然后它从中读取 HTML 数据并为我生成日历并提供自动警报。

问题
问题是这个网络浏览器使用 IE (yeesh help me),它不适用于网站的所有部分。我在站点上进行了一些挖掘,发现了 ASP 站点从何处获取数据:服务器上某处的 XML 表。我可以访问此 XML 表,但前提是我已登录(有关更多信息,请参阅所附图像)。

当前解决方案
所以我的问题是:我如何实际登录到这个区域?
我可以使用 webbrowser 登录,然后使用它下载 XML,但它太慢而且太旧,所以有没有办法可以通过我的凭据? URL 是这样的“https://www.mycoles.com.au/api/rosters/nextweek”——我没有看到像 ?name=myname ?pass=mypassword... 这样的东西。 (我有点新)。

更多详情:
应用语言:C#。
当前技术:Windows 窗体应用程序/ IE 网络浏览器控件。
站点后端:Microsoft Sharepoint。
有什么我想念的吗?请问..?

附加内容
Mycoles XML Logged in
Mycoles XML Access Denied 更新: 因此,在搜索和检查了该站点一段时间后,我尝试使用 c# webbrowser 访问数据,但没有成功。它说它无法下载数据,但 chrome 可以。奇怪的。我不确定它不再是一个 XML 文件,而是一个请求,我没有足够的知识来处理这个,所以请指点任何人?看看这个网站https://www.mycoles.com.au/api/rosters/nextweek,请告诉我你的想法。在此先感谢... :)

【问题讨论】:

  • 我通常使用像wireshark或fiddler这样的嗅探器进行调试。我首先使用标准浏览器访问网站并捕获嗅探器结果。然后与失败的 c# 应用程序进行比较。通常,解决方法是将标头添加到与良好的 Web 结果相匹配的 c# 应用程序中。 Net 中的 httpclient 非常智能,不会像 Web 应用程序那样添加标头。为了避免登录,通常需要证书或需要使用 cookie。当客户端连接到 Web 服务器时,会使用网页的标头和请求的标头进行协商。结果在响应标头中。
  • 我查看了链接,但没有提供有用的信息。您需要从 Web 下载嗅探器(免费)并捕获 http 数据包以确定根本原因。请求/响应具有标头和正文,标头缺少信息。 cookie 包含在标头中。 cookie 来自服务器的第一个请求,并具有到期日期。因此,如果您第一次登录服务器,您将获得一个有效的 cookie,然后您不必再次登录,直到 cookie 过期。证书与您必须安装的证书不同,通常有效期为 1 年。
  • @jdweng 我发现在员工门户和存储 XML 的区域之间共享了一些 cookie。我只需要一种登录服务器的方法,应该很好。我已经尝试过 SharePoint 客户端,也尝试过 HTTPClient,但都不起作用。我会及时向大家发布。您知道我如何实际执行登录吗?我对此真的很陌生,不知道自己在做什么。
  • 与其登录,不如转到文件的 URL。您可以使用 Windows 资源管理器(不是网络浏览器)使用 URL 访问文件吗?如果是这样,您可以直接获取文件。如果您在公司网络上,它可能正在使用组策略。如果您无法访问该文件,那么您的 MIS 应该能够为您提供访问权限。需要将您的用户帐户添加到有权访问本地 PC 和文件所在磁盘服务器上的组的 Windows 组。
  • 另一种选择是使用带有网络凭据的 FTP,这将允许您下载文件。网络凭据可以使用您的登录凭据(默认),也可以包含用户名和密码(如果与您在本地 PC 上使用的登录名不同)。您还可以将网络凭据添加到您的 httpclient:stackoverflow.com/questions/45609530/…

标签: c# xml winforms web sharepoint


【解决方案1】:

SharePoint 支持不同形式的身份验证。开箱即用,提供基于 Active Directory 的单点登录,并且可以配置基于表单(用户名、密码)的身份验证。

通常,组织使用 AD SSO 是为了简单。如果在您打开桌面浏览器并导航到 SharePoint 网站后,您无需输入任何凭据而只需登录,那么很可能是这种情况。这可以是 Kerberos 或 NTLM。 HttpWebRequest 类支持这两种方法。

【讨论】:

    猜你喜欢
    • 2011-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多