2017-02-10 3 views
0

を使用して、コンテンツサーバ内のAPI/V1 /認証方式=ポストでOTCSticketを取得する方法:(スクリーンショット)私はAPIコール郵便配達を使用して、バックレスポンスボディにチケットをプレゼントされた次のC#

enter image description here

C#のHttpWebRequestレスポンスでチケットを取得できません。

C#コードstatuscode=200として

HttpWebRequest Request = WebRequest.Create(strUrl) as HttpWebRequest; 
Request.Method = "POST"; 
Request.Headers.Add("Authorization", "Basic <>"); 
//Request.ContentType = "application/form-data"; 

Request.KeepAlive = true; 

string data = string.Format("username=" + UserName + "&password=" + Password); 
byte[] dataStream = Encoding.UTF8.GetBytes(data); 
Request.ContentLength = dataStream.Length; 

using (Stream newStream = Request.GetRequestStream()) 
{ 
    // Send the data. 
    newStream.Write(dataStream, 0, dataStream.Length); 
    newStream.Close(); 
} 

var Response = (HttpWebResponse)Request.GetResponse(); 
using (var stream = Response.GetResponseStream()) 
using (var reader = new StreamReader(stream)) 
{ 
    if (Response.StatusCode != HttpStatusCode.OK) 
     throw new Exception("The request did not complete successfully and returned status code " + Response.StatusCode); 

    ResponseTicket strTicket= JsonConvert.DeserializeObject<ResponseTicket>(reader.ToString()); 
    JsonConvert.DeserializeObject(Response.GetResponseStream().ToString()); 
    MessageBox.Show(strTicket.Ticket); 
} 

:以下の小さなサンプルコードを参照してください。しかし、コンテンツの長さは0です。 CS10.5 APIで意味のある完全なヘルプを見つけることは非常に困難です。私はそこにAppWorksプラットフォームをチェックしましたが無駄です。誰かがコードで問題を見つけることができれば分かりますが、明らかに私は見ることができません。

答えて

0

これがまだあなたにとって問題であるかどうかはわかりません。私にとってもそれは分かりましたが、理解しました:

  public string LoginAsAdminAndRetrieveTicket(string userName, string passWord, string domain, string url) 
    { 
     var uri = $"http://{url}/otcs/llisapi.dll/api/v1/auth"; 

     var request = new HttpRequestMessage(); 
     request.Headers.Add("Connection", new[] { "Keep-Alive" }); 
     request.Headers.Add("Cache-Control", "no-cache, no-store, must-revalidate"); 
     request.Headers.Add("Pragma", "no-cache"); 
     request.RequestUri = new Uri(uri); 
     request.Method = HttpMethod.Post; 
     request.Content = new StringContent($"username={userName};password={passWord}", Encoding.UTF8, "application/x-www-form-urlencoded"); 

     var httpClientHandler = new HttpClientHandler 
     { 
      Proxy = WebRequest.GetSystemWebProxy(), 
      UseProxy = true, 
      AllowAutoRedirect = true 
     }; 

     using (var client = new HttpClient(httpClientHandler)) 
     { 
      var response = client.SendAsync(request).Result; 
      string ticket; 
      var vals = response.Headers.TryGetValues("OTCSTicket", out IEnumerable<string> temp) ? temp : new List<string>(); 
      if (vals.Any()) 
      { 
       ticket = vals.First(); 
      } 

      return response.Content.ReadAsStringAsync().Result; 
     } 
    } 
関連する問題