Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# “最佳”;旋度-u“;C语言中的等价性#_C#_.net_Authorization - Fatal编程技术网

C# “最佳”;旋度-u“;C语言中的等价性#

C# “最佳”;旋度-u“;C语言中的等价性#,c#,.net,authorization,C#,.net,Authorization,使用此curl命令时: curl -XPUT "https//auth.something.com" -u "clientId:clientSecret" 我应该怎么做才能把它转换成C NetworkCredential myCred=新的NetworkCredential(clientKey,clientSecret) 或者这个: 或 webClient.Headers[HttpRequestHeader.Authorization]=“Basic”+based64 () 或证书() 我的

使用此curl命令时:

curl -XPUT "https//auth.something.com"
-u "clientId:clientSecret"
我应该怎么做才能把它转换成C

NetworkCredential myCred=新的NetworkCredential(clientKey,clientSecret)

或者这个:

webClient.Headers[HttpRequestHeader.Authorization]=“Basic”+based64
()

或证书()


我的卷曲转换

using(var webClient = new WebClient()){
    webClient.UploadString("https//auth.something.com","PUT","{ \"data\":\"dummy data\" }");
}

这就是你要找的吗

HttpClient client = new HttpClient();
client.BaseAddress = new Uri("base address");
client.DefaultRequestHeaders.Add("Authorization", "Basic " + System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes("clientId" + ":" + "clientSecret")));
更新:基于更新的问题

我还没试过,但你能测试一下吗

using(var webClient = new WebClient())
{
    webClient.Headers.Add("Authorization", "Basic " + System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes("clientId" + ":" + "clientSecret")));
    webClient.UploadString("https//auth.something.com","PUT","{ \"data\":\"dummy data\" }");    
}

如果不能或不愿使用
HttpClient
,则可以使用
HttpWebRequest

string postData= "firstone=" + inputData;
ASCIIEncoding encoding = new ASCIIEncoding ();
byte[] data = encoding.GetBytes (postData);

HttpWebRequest request = (HttpWebRequest)WebRequest.Create ("http://target.com");
request.PreAuthenticate = true;
request.Credentials = new NetworkCredential ("username", "password");;
request.Method = "PUT";
request.ContentType =  "application/x-www-form-urlencoded";
request.ContentLength = data.Length;    
using (Stream stream = request.GetRequestStream ()) {
    stream.Write (data, 0, data.Length);
}    
var response = (HttpWebResponse)request.GetResponse ();
response.Close ();
MSDN

其他身份验证选项包括:

  • request.Headers[“Authorization”]=“Basic”+Convert.ToBase64String*Encoding.ASCII.GetBytes(authInfo))
    HTTP基本身份验证要求对“基本”之后的所有内容进行Base64编码

  • httpWebRequest.Headers.Add(“授权:OAuth”+访问令牌)


或者像这样将其放入有效负载中,有没有任何答案对您有帮助?
NetworkCredential
更好?我不应该使用Http Header,请您添加一点用于进行API调用的代码好吗?(即使它不能正常工作也没关系)@DylanCzenski我已经更新了答案,但我还没有真正验证过这一点。你能试试吗?我目前正在使用这个参数,但我不想把它放在标题中,但如果你有两个参数,比如“grant_type=client_credtials”,然后是“name=abc”,当然,你可以有多个URL参数,例如
string.Format(“id={0}&name={1}&inputPassword={2}”,123,email,password)