postman 在正文中使用参数的HttpClient发布

xoefb8l8  于 2022-11-07  发布在  Postman
关注(0)|答案(4)|浏览(222)

我成功地使用Postman做了一个验证的帖子。但是,我似乎不能让它从C#工作,并得到一个401错误。密码和用户名的验证与在Postman中一样。我该怎么做呢?
下面是我的代码:

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中的页眉和正文设置。

现在使用以下代码作为content参数:

var content = new HttpFormUrlEncodedContent(new[]
{
    new KeyValuePair<string, string>("username", email),
    new KeyValuePair<string, string>("password", password)
});

仔细一看,似乎 Postman 和代码请求的用户名都是用Fiddler编码的。所以,我关于使用编码用户名的理论是不太正确的。这里是Fiddler请求的快照......这是可能的吗?
Postman 信头:

程式码信头:

Raw View Postman * 显示编码的用户名字段:


指令集
原始视图代码:

o0lyfsai

o0lyfsai1#

我的理解是,对于UWP应用程序,推荐使用Windows.Web.Http.HttpClient()来实现这一点,另外还要确保您的URL没有拼写错误。:)

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);
icnyk63a

icnyk63a2#

请尝试将内容更改为以下内容

var content = new FormUrlEncodedContent(new[]
{
    new KeyValuePair<string, string>("username", email),
    new KeyValuePair<string, string>("password", password)
});
6uxekuva

6uxekuva3#

我使用这个函数来发送带参数的POST请求,其中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;
    }
}
jqjz2hbq

jqjz2hbq4#

我遇到了同样的问题,并通过从HttpClient发布到的URL中删除尾随的“/”来修复它。

相关问题