本文中包含的代码示例显示了如何执行此操作。您必须对其进行深入研究才能弄清楚它们是如何组合在一起的,但简而言之,他们使用WebRequest
带有“POST”方法的 a 并在该 POST 中传递 4 个必需的值。我建议查看示例代码,但要将其提炼成基本元素,它可能看起来像这样:
string request = string.Format("grant_type=client_credentials&client_id={0}&client_secret={1}&scope=http://api.microsofttranslator.com", HttpUtility.UrlEncode(clientId), HttpUtility.UrlEncode(clientSecret));
WebRequest webRequest = WebRequest.Create("https://datamarket.accesscontrol.windows.net/v2/OAuth2-13");
webRequest.ContentType = "application/x-www-form-urlencoded";
webRequest.Method = "POST";
byte[] bytes = Encoding.ASCII.GetBytes(request);
webRequest.ContentLength = bytes.Length;
using (Stream outputStream = webRequest.GetRequestStream())
{
outputStream.Write(bytes, 0, bytes.Length);
}
using (WebResponse webResponse = webRequest.GetResponse())
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(AdmAccessToken));
//Get deserialized object from JSON stream
AdmAccessToken token = (AdmAccessToken)serializer.ReadObject(webResponse.GetResponseStream());
return token;
}
上面的大部分代码都在private AdmAccessToken HttpPost(string DatamarketAccessUri, string requestDetails)
示例中的方法中。
这AdmAccessToken
是示例中定义的类,具有返回值的属性:
访问令牌
令牌类型
过期日期在
范围
这是一个非常全面的样本,需要进行少量挖掘才能获得相关部分,但据我所知,它们都在那里。为简单起见,我发布的片段只是简单地结合了示例中其他地方所做的几件事。