
UNSOLVED
C# connect unity rest API failed error: (401) Unauthorized
I manage to get info from Unity 450F, and the rest api works in RESTClient(a firefox extention). but C# does not.
In C#, I tried both boht Web client and HttpWebRequest, even the third party libary(RestSharp), all failed.
WebClient:
var client = new WebClient();
//client.Headers.Add(HttpRequestHeader.Authorization, GetAuthHeader());
client.Credentials = new NetworkCredential(Credential.UserName, Credential.Password);
client.Headers["X-EMC-REST-CLIENT"] ="true";
client.Headers["Content-Type"] = "application/json";
client.Headers["Accept"] = "application/json";
var response = client.DownloadString(url)
.......
WebRequest
HttpWebRequest request = HttpWebRequest.Create(uri) as HttpWebRequest;
request.Headers.Add("Authorization", GetAuthHeader());
//request.Headers.Add("Accept-Encoding", "gzip, deflate, br");
//request.Headers.Add("Accept-Language", "en-US,en;q=0.5");
request.Headers.Add("X-EMC-REST-CLIENT", "true");
request.ContentType = "application/json";
request.Accept= "application/json";
//request.Accept = "*/*";
string response;
using (Stream s = request.GetResponse().GetResponseStream())
{
using (StreamReader sr = new StreamReader(s))
{
response = sr.ReadToEnd();
}
}
return response;
.......
private string GetAuthHeader()
{
string auth = string.Format("{0}:{1}", Credential.UserName, Credential.Password);
string enc = Convert.ToBase64String(Encoding.ASCII.GetBytes(auth));
string cred = string.Format("{0} {1}", "Basic", enc);
return cred;
}
I also use the curl command generated by RESTClient:
curl -X GET -k -H 'Authorization: Basic XXXXXXXXXXXXXXXXXXXXX' -H 'X-EMC-REST-CLIENT: true' -i 'https://serverip/api/types/storageResource/instances/?fields=name,type,sizeTotal'
still not work, and I found this article, added the -L and -I command, still cannot get same result as from RESTClient.
Responses (0)
Solutions (0)
