正确的HTTPS请求形式
本文关键字:请求 HTTPS | 更新日期: 2023-09-27 18:05:43
我需要发送POST请求并接收访问令牌。Http请求应该是这样的:
POST /oauth/token HTTP/1.1
Host: api.quizlet.com
Authorization: Basic c3ZWRUhNZVA0aDp3eS4yUXA0ZXNFY0xQUFl2WkRFTGpn
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
grant_type=authorization_code&code=GENERATED_CODE
我不知道,如何发送"grant_type"answers"code"在我的请求,因为(根据Fiddler,我已经测试过它)他们应该在请求体。
代码是这样的:
client = new WebClient();
client.Headers[HttpRequestHeader.Authorization] = "Basic " + "MY_SECRET_CODE";
client.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
client.Headers[HttpRequestHeader.Host] = "api.quizlet.com";
client.Headers[HttpRequestHeader.AcceptCharset] = "UTF-8";
client.UploadStringCompleted += ClientOnUploadStringCompleted;
client.UploadStringAsync(tokenUrl, "POST",string.Format("grant_type={0}&code={1}",
HttpUtility.HtmlEncode("authorization_code"),HttpUtility.HtmlEncode(code)));
顺便说一句,这段代码运行在WP7上,我已经用了将近2天的时间来处理这个请求,而我在请求中提供的那些值是100%正确的,因为我试图在Fiddler中粘贴样本请求并收到适当的令牌。
编辑:我忘记了数据中的redirect_uri参数,我试图上传,所以它不起作用…正确的数据字符串应该是这样的:
string.Format("grant_type={0}&code={1}&redirect_uri={2}",
HttpUtility.HtmlEncode("authorization_code"),HttpUtility.HtmlEncode(code), HttpUtility.HtmlEncode("http://someurl.com"))
至少有一个问题似乎是目标服务器的预期字符集应该在ContentType标头中设置,而不是AcceptCharset:
client.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded; charset=UTF-8";
client.Headers[HttpRequestHeader.Host] = "api.quizlet.com";
//client.Headers[HttpRequestHeader.AcceptCharset] = "UTF-8";