gpt4 book ai didi

c# - HttpWebRequest POST 向表单变量添加 NULL 值

转载 作者:太空宇宙 更新时间:2023-11-03 11:41:29 26 4
gpt4 key购买 nike

我正在尝试通过 POST 使用 HttpWebRequest 对象调用 RESTful 服务。我正在尝试使用包含 url 编码字符串的请求正文传递 1 个变量。当它到达服务器时我看到了请求;但是,它显示了 2 个表单变量。第一个是 Form[null],第二个是我的变量。

我正试图找到这个 NULL key 的来源;但是,我不能。关于如何解决这个问题的任何想法,因为当我尝试将它与 .Net 的 Nancy Web 框架一起使用时它会引发问题。

代码:

var request = WebRequest.Create("http://localhost:8888/RouteName") as HttpWebRequest;
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";

var jsonString =
"[\"00000000-0000-0000-000000000001\",\"00000000-0000-0000-000000000002\"]";

var data = new StringBuilder();
data.Append("Keys=" + HttpUtility.UrlEncode(jsonString));

byte[] byteData = UTF8Encoding.UTF8.GetBytes(data.ToString());
request.ContentLength = byteData.Length;

using (var requestStream = request.GetRequestStream())
{
requestStream.Write(byteData, 0, byteData.Length);
}

using (var response = request.GetResponse() as HttpWebResponse)
{
// ends up with a 500 response.
}

最佳答案

我没有在很大程度上使用 Webrequest,主要是因为我发现 webclient 对我来说更容易使用。这是一个使用 Webclient 通过 POST 发送数据的简单示例:

class Program
{
static void Main(string[] args)
{
var webclient = new WebClient();
var valueToSend = new Message("some data", "some other data");
var parameters = new NameValueCollection
{
{"Key", Jsonify(valueToSend)}
};
webclient.UploadValues(
"http://localhost:8888/Ny",
"POST",
parameters);
}

static string Jsonify(object data)
{
using (MemoryStream ms = new MemoryStream())
{
var ser = new DataContractJsonSerializer(data.GetType());
ser.WriteObject(ms,data);
return Encoding.Default.GetString(ms.ToArray());
}
}

}

这可能不是您要找的东西,但它消除了许多潜在的错误源。

关于c# - HttpWebRequest POST 向表单变量添加 NULL 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4647505/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com