我正在尝试从visual studio访问Salesforce数据。但代码返回上述异常。 我的班级文件如下。
public string HttpPost(string URI, string Parameters)
{
System.Net.WebRequest req = System.Net.WebRequest.Create(URI);
req.ContentType = "application/x-www-form-urlencoded";
req.Method = "POST";
// Add parameters to post
byte[] data = System.Text.Encoding.ASCII.GetBytes(Parameters);
req.ContentLength = data.Length;
System.IO.Stream os = req.GetRequestStream();
os.Write(data, 0, data.Length);
os.Close();
// Do the post and get the response.
**System.Net.WebResponse resp = req.GetResponse();**
if (resp == null) return null;
System.IO.StreamReader sr = new System.IO.StreamReader(resp.GetResponseStream());
return sr.ReadToEnd().Trim();
}
我正在尝试调用POST方法从salesforce中检索令牌。 '**'括起来的语句会抛出异常。
远程服务器返回错误:(400)错误请求。
任何帮助表示感谢。
答案 0 :(得分:0)
您尝试向Salesforce发布的数据或使用的网址一点也不清楚。这是您尝试将数据提交到web 2 lead的自定义Web服务吗?
将Salesforce与.NET集成的一种相当标准的方法是通过Partner API or the Enterprise API。这些通常是很好的起点,并定义了可以作为Web引用导入Visual Studio项目的WSDL。
还有各种REST apis。由于您要发布到
“login.salesforce.com/services/oauth2/token”
我假设您正在使用Web Server OAuth 2 Authentication Flow并且您拥有现在用于请求访问令牌的授权码。
您发布到此URL的参数应类似于(注意,这直接来自Salesforce数据,因此它不应包含任何敏感信息):
<强> grant_type 强> = authorization_code&安培;的码强> = aPrxsmIEeqM9PiQroGEWx1UiMQd95_5JUZ VEhsOFhS8EVvbfYBBJli2W5fn3zbo.8hojaNW_1g%3D%3D&安培;的的client_id 强> = 3MVG9lKcPoNI NVBIPJjdw1J9LLM82HnFVVX19KY1uA5mu0QqEWhqKpoW3svG3XHrXDiCQjK1mdgAvhCs cA9GE&安培;的 client_secret 强> = 1955279925675241571&安培; 的 REDIRECT_URI 强> = HTTPS%3A%2F%2Fwww.mysite.com%2Fcode_callback.jsp
您将需要使用Salesforce在上一步中返回给您的授权代码以及您自己的client_id和client_secret。您也可以根据需要设置redirect_uri。
使用用户名和密码建立REST连接:Understanding the Username-Password OAuth Authentication Flow
您需要将grant_type设置为password并提供用户名和密码。这应该发布到https://login.salesforce.com/services/oauth2/token
<强> grant_type 强> =&密码放大器;的的client_id 强> = 3MVG9lKcPoNINVBIPJjdw1J9LLM82Hn FVVX19KY1uA5mu0QqEWhqKpoW3svG3XHrXDiCQjK1mdgAvhCscA9GE&安培;的 client_secret 强> = 1955279925675241571&安培;的用户名强> = TESTUSER%40salesforce.com&安培; 密码强> = mypassword123456
然后,您可以从回复中获取access_token
。