c# - 使用 C# HttpClient 登录 Salesforce
问题描述
我似乎无法让这段代码工作:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("https://login.salesforce.com");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/x-www-form-urlencoded"));
client.DefaultRequestHeaders.Add("User-Agent", "SFAPIClient"); //Random Client
var parameters = new Dictionary<string, string>();
parameters["grant_type"] = "password";
parameters["client_id"] = CLIENT_ID;
parameters["client_secret"] = CLIENT_SECRET;
parameters["username"] = t_username.Text;
parameters["password"] = t_password.Text;
var response = await client.PostAsync("https://login.salesforce.com/services/oath2/token", new FormUrlEncodedContent(parameters));
var responseString = await response.Content.ReadAsStringAsync();
Salesforce 不断响应“此 url 不再存在”,这是 CURL 在我开始工作之前所响应的内容。
我试图模仿的 CURL 代码是:
curl [salesforce url] -d "grant_type=password" -d "client_id=[clientId]" -d "client_secret=[clientSecret]" -d "username=[username]" -d "password=[password]"
^ 运行后服务器响应:
{"access_token":"[token]","instance_url":[etc...]}"
我希望在 C# 中得到相同的响应 - 到目前为止它一直很烦人。
卷曲输出:
解决方案
client.PostAsync("https://login.salesforce.com/services/oath2/token")
有一个错字 - 应该是oauth2
,你漏掉了一个字母。
您还可以查看Salesforce 的 .NET SDK ,该 SDK将这个特定序列包装到一个单行中。
推荐阅读
- python - 如何打印出数组中的空节点而不是获取数组中节点的地址
- html - 使用引导程序重叠 div 超出页面宽度,不确定原因是什么
- swiftui - SwiftUI 导航控制器卡顿,每个列表行有两个 Navigationlinks
- c++ - 使用没有名称的参数
- azure - Azure VM 通过 CLI 将 IP 地址更改为静态
- python - 我想摆脱具有特定日期的数据框的一部分
- python - 在不拟合模型的情况下进行预测 (knn)
- ionic-framework - ionic 5 - 路由到带有页面 id 问题的详细信息页面
- python - 如何从 python 中的 CSV 文件打印特定字段?
- powershell - 强制导入值为整数