2013-02-20 84 views
2

以下是MSDN獲得從蔚藍的ACS(訪問控制服務)的SWT令牌所提供的代碼示例: Azure的ACS獲取令牌使用RestSharp 415錯誤

private static string GetTokenFromACS(string scope) 
{ 
    string wrapPassword = pwd; 
    string wrapUsername = uid; 

    // request a token from ACS 
    WebClient client = new WebClient(); 
    client.BaseAddress = string.Format(
     "https://{0}.{1}", serviceNamespace, acsHostUrl); 

    NameValueCollection values = new NameValueCollection(); 
    values.Add("wrap_name", wrapUsername); 
    values.Add("wrap_password", wrapPassword); 
    values.Add("wrap_scope", scope); 

    byte[] responseBytes = client.UploadValues("WRAPv0.9/", "POST", values); 

    string response = Encoding.UTF8.GetString(responseBytes); 

    Console.WriteLine("\nreceived token from ACS: {0}\n", response); 

    return HttpUtility.UrlDecode(
     response 
     .Split('&') 
     .Single(value => value.StartsWith("wrap_access_token=", StringComparison.OrdinalIgnoreCase)) 
     .Split('=')[1]); 
} 

我想用複製的代碼RestSharp:

var request = new RestRequest("WRAPv0.9", Method.POST); 
request.AddHeader("Content-Type", "application/x-www-form-urlencoded"); 
request.AddParameter("wrap_name", uid, ParameterType.RequestBody); 
request.AddParameter("wrap_password", pwd, ParameterType.RequestBody); 
request.AddParameter("wrap_scope", realm, ParameterType.RequestBody); 

RestClient client = new RestClient(
    string.Format(@"https://{0}.{1}", serviceNamespace, acsHostUrl)); 

client.ExecuteAsync(request, Callback); 

我嘗試了上述代碼的但沒有用其它變型。我不斷收到415錯誤,指出:

415不受支持的媒體類型T8000內容類型'text/plain'不支持 。請求內容類型必須是 'application/x-www-form-urlencoded'。

我不是一個提琴手專家,但與我有限的經驗,我無法檢查我的傳出http請求,因爲它是加密的。

我希望能夠解決這個問題。

回答

1

您可以嘗試省略AddHeader方法調用,而將內容類型設置爲第一個AddParameter
問題is described here

相關問題