【发布时间】:2018-08-05 05:58:45
【问题描述】:
我成功使用邮递员进行身份验证,但似乎无法从 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);
... }
这里是 Postman 中标题和正文的设置。
现在将这段代码用于内容参数:
var content = new HttpFormUrlEncodedContent(new[]
{
new KeyValuePair<string, string>("username", email),
new KeyValuePair<string, string>("password", password)
});
仔细查看后,用户名似乎在 Fiddler 中针对 Postman 和代码请求进行了编码。所以,我关于使用编码用户名的理论并不完全正确。这里是 Fiddler 请求的快照...还有什么建议/想法吗?
邮递员标题:
【问题讨论】:
-
您是否运行 fiddler 来实际查看发送的内容?
-
尝试使用
User-Agent标头。 -
@OldProgrammer 是的,我做到了,并且发现用户名正在被编码。因此,russ@domain.com 以 russ%40domain.com 的形式通过网络,我需要将其设置为不以某种方式进行编码。
-
用户代理不是问题@crowcoder
-
因为您尝试过,或者其他方法有效,或者您不相信?一些服务会检查用户代理,即使它是自定义值。
标签: c# postman dotnet-httpclient