我成功使用邮递员进行身份验证的帖子,但似乎无法从C#开始工作,获得401.密码和用户名验证与邮递员相同。有任何想法吗?这是我的代码:
var url = AppConstants.ApiLoginUrl;
var uriRequest = new Uri(url);
string httpResponseBody;
using (var httpClient = new Windows.Web.Http.HttpClient())
{
var content = new HttpStringContent(string.Format("username={0}&password={1}", email, password), Windows.Storage.Streams.UnicodeEncoding.Utf8, "application/x-www-form-urlencoded");
try
{
var httpResponse = await httpClient.PostAsync(uriRequest, content);
... }
以下是邮递员头部和正文的设置。
现在将此代码用于内容参数:
var content = new HttpFormUrlEncodedContent(new[]
{
new KeyValuePair<string, string>("username", email),
new KeyValuePair<string, string>("password", password)
});
仔细观察,看起来用户名在Fiddler中为邮递员和代码请求编码。所以,我关于使用编码用户名的理论并不完全正确。这里有来自Fiddler的请求的快照...还有更多的建议/想法吗?
邮差标题:
答案 0 :(得分:1)
尝试将您的内容更改为以下
{{1}}
答案 1 :(得分:1)
我正在使用此功能发送带有参数的帖子请求,其中Dictionary<string, string> data
作为Web服务预期的键值
public static T PostCast<T>(string url, Dictionary<string, string> data)
{
using (HttpClient httpClient = new HttpClient())
{
var response = httpClient.PostAsync(url, new FormUrlEncodedContent(data)).Result;
return response.Content.ReadAsAsync<T>().Result;
}
}
希望有所帮助:)
答案 2 :(得分:1)
我的理解是,对于UWP应用程序,建议使用Windows.Web.Http.HttpClient(),并确保您的网址没有拼写错误。 :)
var url = AppConstants.ApiLoginUrl;
var uriRequest = new Uri(url);
var content = new HttpFormUrlEncodedContent(new[]
{
new KeyValuePair<string, string>("username", email),
new KeyValuePair<string, string>("password", password)
});
using (var httpClient = new Windows.Web.Http.HttpClient())
{
try
{
var httpResponse = await httpClient.PostAsync(uriRequest, content);
答案 3 :(得分:0)
我遇到了同样的问题,并通过从HttpClient发布到的URL中删除结尾的“ /”来解决了这个问题。