编辑:我也尝试过使用HttpRequest并遇到类似的错误,但我现在也发现它适用于curl。我想知道我的.NET中的某些配置是否有问题?我不知道从哪里开始看。但
我正在尝试进行一个非常简单的POST,但是我收到了WebException
基础连接已关闭:发生意外错误 发送。
我对这类工作不是很熟悉,而且我没有想法,所以任何建议都会受到赞赏。
我添加了所有标头,并尝试调整ServicePointManager.MaxServicePointIdleTime和KeepAlive。这个特殊的请求应该有一个空的主体,但是我也尝试过对同一站点的其他URL不为空的主体的请求。
我可以使用此处演示的方法使用浏览器成功发送POST:https://stackoverflow.com/a/11886281/3747260
var formPost = document.createElement('form');
formPost.method = 'POST';
formPost.action = 'https://vulcun.com/api/games';
document.body.appendChild(formPost);
formPost.submit();
以下是我尝试使用此模板发送HttpWebRequest的方法(我从基础知识开始,然后继续添加浏览器请求中的标题):https://msdn.microsoft.com/en-us/library/debx8sh9(v=vs.110).aspx
using System;
using System.Net;
using System.IO;
namespace Scraper{
class MainClass{
public static void Main (string[] args){
try{
//ServicePointManager.MaxServicePointIdleTime = 15;
HttpWebRequest rq = (HttpWebRequest)WebRequest.Create("https://vulcun.com/api/games");
//rq.KeepAlive = false;
byte[] byteArray = { };
rq.Host = "vulcun.com";
rq.Method = "POST";
rq.ContentLength = byteArray.Length;
rq.ContentType = "application/x-www-form-urlencoded";
rq.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
rq.Headers.Add("Accept-Encoding","gzip, deflate");
rq.Headers.Add("Accept-Language", "en-US,en;q=0.5");
Stream dataStream = rq.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
HttpWebResponse resp = (HttpWebResponse)rq.GetResponse();
}
catch(WebException e){
Console.WriteLine("Message: " + e.Message);
if (e.Status == WebExceptionStatus.ProtocolError){
Console.WriteLine("Status Code: {0}", ((HttpWebResponse)e.Response).StatusCode);
Console.WriteLine("Status Description : {0}", ((HttpWebResponse)e.Response).StatusDescription);
}
}
catch(Exception e){
Console.WriteLine(e.Message);
}
Console.ReadLine();
}
}
}