在C#中执行Get请求?

在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

我正在尝试使用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的
——用户
可以用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())
{
    // ...
}