C# “最佳”;旋度-u“;C语言中的等价性#
使用此curl命令时: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 -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)代码>