gpt4 book ai didi

c# - 在 C# 中构建 POST

转载 作者:行者123 更新时间:2023-11-30 15:46:49 26 4
gpt4 key购买 nike

我使用在 stackoverflow 上找到的 PostData 类编写了以下代码以构建 POST。

        PostData pd = new PostData();
pd.Params.Add(new PostDataParam("sessionId", "0", PostDataParamType.Field));
pd.Params.Add(new PostDataParam("guestId", "1", PostDataParamType.Field));

HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create(new Uri("http://oe1235/test/uploadTest.php").AbsoluteUri);

webrequest.ContentType = "multipart/form-data; boundary=" + pd.Boundary;
webrequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
webrequest.Headers.Add("Accept-Language: en-gb,en;q=0.5");
webrequest.Headers.Add("Accept-Encoding: gzip,deflate");
webrequest.Headers.Add("Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7");
webrequest.Headers.Add("Keep-Alive: 115");
webrequest.Referer = "http://localhost/test/test.php";
webrequest.Headers.Add("Cache-Control: max-age=0");
webrequest.Method = "POST";


byte[] content = Encoding.ASCII.GetBytes(pd.GetPostData());
webrequest.ContentLength = content.Length;
Stream request = webrequest.GetRequestStream();
request.Write(content, 0, content.Length);
try {
Console.Write(webrequest.GetResponse());
} catch (Exception e) {
Console.Write("Error: " + e.ToString());
}
Console.ReadLine();

我正在使用 Charles 监控请求/响应,我得到以下信息:

POST /test/uploadTest.php HTTP/1.1
Content-Type: multipart/form-data; boundary=----------8cd4899a18b409a
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Referer: http://localhost/test/test.php
Cache-Control: max-age=0
Host: oe1235
Content-Length: 275
Expect: 100-continue

----------8cd4899a18b409a
Content-Disposition: form-data; name="email"

MyEmail
----------8cd4899a18b409a
Content-Disposition: form-data; name="sessionId"

0
----------8cd4899a18b409a
Content-Disposition: form-data; name="guestId"

1
----------8cd4899a18b409a--

我已经尝试了所有我能想到的方法,但它似乎仍然无效(我的 POST 接收器没有响应,并且 Charles 报告“无法解码多部分正文”,所以我做错了什么. 我的边界看起来没问题,我在所有正确的地方都有换行符,我将它与 Firefox 构造的 POST 进行了比较,它们看起来(几乎 - 除了一个或两个标题)相同。

最佳答案

解决了 - 我假设在指定边界时,它应该包括两个前导 -- 字符,而实际上不应该。所以我在内容标题上指定的边界应该是:

----------8cd4899a18b409a

然后在每个项目之间:

------------8cd4899a18b409a 

更简单地说,如果您的边界是:

Content-Type: multipart/form-data; boundary=myboundary

然后在每个项目之间应该是:

--myboundary

关于c# - 在 C# 中构建 POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4077300/

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