UNSOLVED

EvenLee

updated

9 years ago

E

EvenLee

4 Posts

0

9155

February 25th, 2018 20:00

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.