【发布时间】:2015-06-16 04:36:41
【问题描述】:
我正在尝试使用 HttpClient 在 C# 中执行以下 curl(对我有用)。
curl -X POST http://www.somehosturl.com \
-u <client-id>:<client-secret> \
-d 'grant_type=password' \
-d 'username=<email>' \
-d 'password=<password>' \
-d 'scope=all
C# 代码:
HttpClientHandler handler = new HttpClientHandler { Credentials = new
System.Net.NetworkCredential ("my_client_id", "my_client_secret")
};
try
{
using(var httpClient = new HttpClient(handler))
{
var activationUrl = "www.somehosturl.com";
var postData = "grant_type=password&username=myemail@myemail.com&password=mypass&scope=all";
var content = new StringContent(postData, Encoding.UTF8, "application/x-www-form-urlencoded");
var response = await httpClient.PostAsync(activationUrl, content);
if(!response.IsSuccessStatusCode)
return null;
var result = await response.Content.ReadAsStringAsync();
return result;
}
}
catch(Exception)
{
return null;
}
执行时,只是崩溃,甚至没有捕获异常
通常我能够很好地 GET 和 POST,但让我失望的是如何设置身份验证内容(client-id 和 client-secret)
【问题讨论】:
-
崩溃是什么意思?你在VS里面运行这个吗?您是否开启了首次机会例外?
-
看看这篇 Stackoverflow 帖子是否有帮助:stackoverflow.com/a/23914662/1337635
-
能否请您发布您的代码,包括方法签名。
-
尝试启用 CLRE(从 VS:转到 'DEBUG','Exceptions',检查 'Common Language Runtime Exceptions' 选项('Thrown' 列),然后按 'OK'。然后尝试运行再次输入您的代码(这只会为您提供有关应用崩溃原因的更多信息,当然不会解决您的问题)
-
永远不要这样捕获异常!您只是忽略了异常,甚至没有发现它是哪种异常。你最好只删除 try/catch 块。更糟糕的是,添加代码以向自己显示异常以进行故障排除。
标签: c# .net httpclient