C# HttpClient请求内容

C# HttpClient请求内容,c#,httpclient,adfs,C#,Httpclient,Adfs,我正在尝试使用HttpClient从AD FS获取令牌,然后登录到SharePoint站点。我已经完成了第一部分工作,我可以成功地将凭据发布到ADFS,并在响应中获得令牌。我正在努力学习第二部分。AD FS处理此问题的方法是在登录后用200(OK)回复。响应的主体有一个隐藏的表单,其中包含令牌和目标URL。在浏览器中,表单将使用JavaScript自动提交。但是HttpClient不执行JS,因此进程停止 我的问题:是否可以将.Content.ReadAsStringAsync()添加到另一个p

我正在尝试使用
HttpClient
从AD FS获取令牌,然后登录到
SharePoint
站点。我已经完成了第一部分工作,我可以成功地将凭据发布到ADFS,并在响应中获得令牌。我正在努力学习第二部分。AD FS处理此问题的方法是在登录后用200(OK)回复。响应的主体有一个隐藏的表单,其中包含令牌和目标URL。在浏览器中,表单将使用JavaScript自动提交。但是
HttpClient
不执行JS,因此进程停止

我的问题:是否可以将
.Content.ReadAsStringAsync()
添加到另一个post请求中?我可以使用HTML Agility Pack提取表单值,然后将它们作为键/值数组添加到新请求中(这就是我将凭据发布到ADFS的方式),但我想知道是否有更简单的方法,因为我已经在AD FS的响应中提供了表单内容

谢谢

更新:我最终选择了这条路线,使用HTML敏捷包

// load into HTML Agility Pack
HtmlNode.ElementsFlags.Remove("form");
var adfsPage = new HtmlDocument();
adfsPage.LoadHtml(formContent);

HtmlNode formNode = adfsPage.DocumentNode.SelectNodes("//form")[0];
// loop through each input and add it to the key/value array
foreach (HtmlNode node in formNode.Elements("input"))
  {
    HtmlAttribute value = node.Attributes["value"];
    HtmlAttribute name = node.Attributes["name"];
    if (value != null)
      {
        form.Add(new KeyValuePair<string, string>(name.Value, value.Value));
      }
      Console.WriteLine("Key: " + name.Value);
      Console.WriteLine("Value: " + value.Value);
  }
//加载到HTML敏捷包中
HtmlNode.ElementsFlags.Remove(“表单”);
var adfsPage=新的HtmlDocument();
加载HTML(formContent);
HtmlNode formNode=adfsPage.DocumentNode.SelectNodes(“//表单”)[0];
//循环遍历每个输入并将其添加到键/值数组
foreach(formNode.Elements(“输入”)中的HtmlNode节点)
{
HtmlAttribute值=节点.属性[“值”];
HtmlAttribute name=node.Attributes[“name”];
if(值!=null)
{
添加(新的KeyValuePair(name.Value,Value.Value));
}
Console.WriteLine(“键:+name.Value”);
Console.WriteLine(“Value:+Value.Value”);
}