繁体   English   中英

如何在C#中模拟此发布请求

[英]How do I simulate this post request in C#

我需要发送针对我正在制作的应用程序的一系列获取/发布请求(用于在线聊天的自定义包装)。 我通过宽松地模拟从Telerik Fiddler记录的请求来完成站点登录过程和初始聊天加载。

现在,我在处理另一个发布请求时遇到了麻烦,该请求将用户注册为在线。

它是与socket.io服务器的连接,但事实上我知道没有套接字连接也是可以的,因为当我使用Fiddler的“ composer”功能发送请求时,一切工作正常。

这是我要模拟的请求

POST http://events.********.com/socket.io/1/xhr-polling/vLaINOG3fKixnNs-oTWq?t=1498442322413 HTTP/1.1
Host: events.********.com
Connection: keep-alive
Content-Length: 144
Origin: http://www.********.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36
Content-type: text/plain;charset=UTF-8
Accept: */*
Referer: http://www.********.com/home.php
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.8

5:::{"name":"updateUserStatus","args":[{"status":"online"}]}

尝试模拟的样子(忽略其他网址,它应该与此一起工作)

POST http://events.********.com/socket.io/1/xhr-polling/owR02QZlrwKOwcLjoTW8 HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: events.********.com
Content-Length: 60
Expect: 100-continue

5:::{"name":"updateUserStatus","args":[{"status":"online"}]}

显然,有很多东西不见了,但我认为大多数都不重要。 我注意到的是,原始请求的标头将content-type设置为“ text / plain”,尽管我尝试了多种方法来更改accept和content-type标头以匹配,但它始终以application / json并产生404 图片。

我感觉好像缺少了一些明显而愚蠢的东西,但是过去几个小时我一直在进行故障排除,无法解决任何问题。

这是我用于请求的代码(我取出了“文本/纯文本”内容类型和其他在此之前不起作用的内容,因此它更干净了)

chatreq = (HttpWebRequest)WebRequest.Create("http://events.********.com/socket.io/1/xhr-polling/" + socket);
chatreq.CookieContainer = cookieContainer;
postData = "5:::{\"name\":\"updateUserStatus\",\"args\":[{\"status\":\"online\"}]}";
data = Encoding.ASCII.GetBytes(postData);
chatreq.Method = "POST";
chatreq.ContentType = "application/x-www-form-urlencoded";
chatreq.ContentLength = data.Length;
using (var stream = chatreq.GetRequestStream())
{
    stream.Write(data, 0, data.Length);
}
response = (HttpWebResponse)chatreq.GetResponse();

或者,如果有一种简单的方法可以发送原始的HTTP请求,那就太好了。

谢谢。

我先使用Headers.Clear() ,然后设置所有标题,然后正常进行。

不过,我最终为此项目使用了一个socket.io库,因为它变得容易得多。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM