Request.Form返回空数据

26 浏览
0 Comments

Request.Form返回空数据

我从Nuget获得了这个HttpClient。当我想要获取数据时,我会这样做:

var response = await httpClient.GetAsync(url);
var data = await response.Content.ReadAsStringAsync();

但问题是我不知道如何发送数据?

我需要发送一个POST请求,并将这些值放在其中:comment="hello world"questionId = 1。这些可以是一个类的属性,我不知道。

更新我不知道如何将这些值添加到HttpContent中,因为POST方法需要。 httpClient.Post(string, HttpContent);

0
0 Comments

解决方案:解决(Request.Form returns empty data)问题的方法是使用正确的方法来发送POST请求,并且在发送请求后获取响应。下面是一个示例代码,展示了如何使用HttpClient类来发送POST请求并获取响应:

var comment = "hello world";
var questionId = 1;
var formContent = new FormUrlEncodedContent(new[]
{
    new KeyValuePair("comment", comment), 
    new KeyValuePair("questionId", questionId.ToString()) 
});
var myHttpClient = new HttpClient();
var response = await myHttpClient.PostAsync(uri.ToString(), formContent);
var stringContent = await response.Content.ReadAsStringAsync();

在上述代码中,我们首先创建了一个FormUrlEncodedContent对象,该对象包含了要发送的表单数据。然后,我们使用HttpClient的PostAsync方法发送POST请求,并将表单数据作为参数传递给该方法。最后,我们使用response.Content.ReadAsStringAsync方法来获取响应内容。

如果你需要使用更简洁的方式创建表单数据,你可以使用Dictionary字典对象来代替KeyValuePair数组。下面是使用Dictionary对象创建表单数据的示例代码:

var formContent = new FormUrlEncodedContent(new Dictionary {
    {"comment", comment},
    {"questionId", questionId.ToString() }
});

请确保你在发送POST请求之前正确设置了uri变量,并且在接收响应后正确处理响应内容。如果你仍然遇到(Request.Form returns empty data)问题,请确保你的代码中没有其他错误或问题。

相关帖子:[POSTing JsonObject With HttpClient From Web API](https://stackoverflow.com/q/6117101/465053)

0
0 Comments

(Request.Form returns empty data)这个问题的出现的原因是使用了错误的请求格式,解决方法是使用正确的请求格式。

在给定的代码中,使用了FormUrlEncodedContent作为请求的内容类型。然而,根据服务器的要求,可能需要使用MultipartFormDataContent作为请求的内容类型。

为了解决这个问题,可以将代码中的这一行:

var res = await client.PostAsync("", new FormUrlEncodedContent(body));

替换为:

var res = await client.PostAsync("", new MultipartFormDataContent());

这样,就可以按照服务器的要求正确地提交请求,从而解决(Request.Form returns empty data)的问题。

0
0 Comments

`Request.Form`返回空数据的问题可能出现的原因是未正确使用`HttpClient`的`PostAsync`方法来发送POST请求,并将参数传递给服务器。以下是解决该问题的方法:

首先,使用`HttpClient`的`PostAsync`方法发送POST请求,并将参数作为`HttpContent`的一部分传递给服务器。这可以通过创建一个`FormUrlEncodedContent`对象来实现,其中包含要发送的参数。

using System.Net.Http;
using System.Collections.Generic;
// 创建要发送的参数列表
var parameters = new Dictionary
{
    { "param1", "value1" },
    { "param2", "value2" },
    // 添加更多参数...
};
// 将参数列表转换为HttpContent对象
var content = new FormUrlEncodedContent(parameters);
// 创建HttpClient对象
var httpClient = new HttpClient();
// 发送POST请求并获取响应
var response = await httpClient.PostAsync(yourUri, content);
// 确保请求成功
response.EnsureSuccessStatusCode();
// 读取响应内容
var responseContent = await response.Content.ReadAsStringAsync();
// 打印响应内容
Console.WriteLine(responseContent);

使用以上代码,您可以正确地发送POST请求,并从服务器接收响应。您还可以根据需要修改参数和URI。

希望这可以帮助您解决`Request.Form`返回空数据的问题。

0