在C#中执行Get请求?
我正在尝试使用C#连接到URL 基本上,我正在尝试做与CURL相同的事情:在C#中执行Get请求?,c#,C#,我正在尝试使用C#连接到URL 基本上,我正在尝试做与CURL相同的事情: curl -i -k --user ABC..:XYZ.. --data "grant_type=client_credentials" https://www.example.com/oauth/token 这是我的C#代码: Curl代码非常有效。我收到了200条状态回复。然而在C#中,我得到的回应是:401,未经授权。似乎没有以正确的格式提供客户端id和密钥 有人知道我的C#代码缺少什么吗 谢谢, 欢呼声curl
curl -i -k --user ABC..:XYZ.. --data "grant_type=client_credentials" https://www.example.com/oauth/token
这是我的C#代码:
Curl代码非常有效。我收到了200条状态回复。然而在C#中,我得到的回应是:401,未经授权。似乎没有以正确的格式提供客户端id和密钥
有人知道我的C#代码缺少什么吗
谢谢,
欢呼声curl的——用户
可以用c#表示为
授权类型需要作为内容发送
var content = new FormUrlEncodedContent(new[]
{
new KeyValuePair<string, string>("grant_type", "client_credentials")
});
var result = await client.PostAsync(url, content);
您的
curl
命令生成POST
请求,因此要在C#中执行同样的操作,您需要一个方法
您的数据是application/x-www-form-urlencoded
,因此您可以通过使用
最后一个问题是身份验证。你应该用这个
这是您的代码示例,应该可以使用:
var client = new HttpClient();
// HTTP Basic authentication
var authenticationHeaderBytes = Encoding.ASCII.GetBytes("ABC..:XYZ..");
var authenticationHeaderValue = Convert.ToBase64String(authenticationHeaderValue);
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", authenticationHeaderValue);
// POST content
var content = new FormUrlEncodedContent(
new Dictionary<string, string> { { "grant_type", "client_credentials" } });
// make request
var response = await client.PostAsync("https://www.example.com/oauth/token", content);
坏事会发生的,不要这样做。你可以读更多。长话短说-你不应该在你的应用程序中创建(也不应该允许)许多
HttpClient
实例。删除标题。此外,basic auth应该是client@theMayer你的意思是我必须删除标题吗?如果是这样的话,我应该把客户端凭据放在哪里?您是否正在尝试获取?您不能使用get发布数据。我想你需要一篇博文。@当我使用博文时,我得到一个错误:401,未经授权这是因为--用户ABC..:XYZ..
与requestMessage.Headers.Add(“用户”,“ABC..:XYZ..”)不同代码>,我将发布一个答案来解释更多内容
var content = new FormUrlEncodedContent(new[]
{
new KeyValuePair<string, string>("grant_type", "client_credentials")
});
var result = await client.PostAsync(url, content);
using (HttpClient client = new HttpClient())
{
var req = new HttpRequestMessage(HttpMethod.Post, new Uri(url));
req.Content = new FormUrlEncodedContent(new Dictionary<string, string>
{
{ "grant_type", "client_credentials" }, // or "password"
{ "username", username },
{ "password", password }
});
var response = await client.SendAsync(req);
// No error handling for brevity
var data = await response.Content.ReadAsStringAsync();
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var client = new HttpClient();
// HTTP Basic authentication
var authenticationHeaderBytes = Encoding.ASCII.GetBytes("ABC..:XYZ..");
var authenticationHeaderValue = Convert.ToBase64String(authenticationHeaderValue);
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", authenticationHeaderValue);
// POST content
var content = new FormUrlEncodedContent(
new Dictionary<string, string> { { "grant_type", "client_credentials" } });
// make request
var response = await client.PostAsync("https://www.example.com/oauth/token", content);
using (var client = new HttpClient())
{
// ...
}