使用JSON的ASP.NET 3.5 C#HTTP Post错误
我尝试了许多不同的问题来寻找答案,但我从未找到一个可以解决这个问题的答案。我可以使用ASP.NET 4.5 Framework发出HTTP请求,但我需要为3.5版执行此操作,显示以下错误: 基础连接已关闭:发送时发生意外错误 代码如下所示。任何帮助都将不胜感激使用JSON的ASP.NET 3.5 C#HTTP Post错误,c#,asp.net,.net,json,C#,Asp.net,.net,Json,我尝试了许多不同的问题来寻找答案,但我从未找到一个可以解决这个问题的答案。我可以使用ASP.NET 4.5 Framework发出HTTP请求,但我需要为3.5版执行此操作,显示以下错误: 基础连接已关闭:发送时发生意外错误 代码如下所示。任何帮助都将不胜感激 var httpWebRequest = (HttpWebRequest)WebRequest.Create(this.baseUrl + "/api_users"); httpWebRequest.Con
var httpWebRequest = (HttpWebRequest)WebRequest.Create(this.baseUrl + "/api_users");
httpWebRequest.ContentType = "application/json";
httpWebRequest.Accept = "application/json";
httpWebRequest.Method = "POST";
httpWebRequest.KeepAlive = false;
//httpWebRequestProtocolVersion = HttpVersion.Version10;
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
streamWriter.Write(json);
}
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
if (this.debug == true)
{
var result = streamReader.ReadToEnd();
this.emailBody += "User POST Request Successful: " + result + "<br /><br />";
}
}
var httpWebRequest=(httpWebRequest)WebRequest.Create(this.baseUrl+“/api_users”);
httpWebRequest.ContentType=“应用程序/json”;
httpWebRequest.Accept=“application/json”;
httpWebRequest.Method=“POST”;
httpWebRequest.KeepAlive=false;
//httpWebRequestProtocolVersion=HttpVersion.Version10;
使用(var streamWriter=newstreamwriter(httpWebRequest.GetRequestStream()))
{
streamWriter.Write(json);
}
var httpResponse=(HttpWebResponse)httpWebRequest.GetResponse();
使用(var streamReader=newstreamreader(httpResponse.GetResponseStream())
{
if(this.debug==true)
{
var result=streamReader.ReadToEnd();
this.emailBody+=“用户POST请求成功:“+result+”
”;
}
}
通常,我如何将字符串写入requeststream如下所示:
if (httpMethod == HttpMethods.POST)
{
var postData = "some string";
var postBytes = Encoding.UTF8.GetBytes(postData);
request.ContentLength = postBytes.Length;
using (var postStream = request.GetRequestStream())
{
postStream.Write(postBytes, 0, postBytes.Length);
postStream.Flush();
postStream.Close();
}
}
不要忘记将ContentLength设置为确切的字节数。ProTip:如果您不需要流行为和所有内容,则比普通的
HttpWebRequest
更易于使用,并且可以从.NET 1.1.set urlencoding属性beore发送请求,HttpWebRequest.ContentType=“application/x-www-form-urlencoded”;。这个问题只针对POST吗?或者在“get”中出现相同的错误?在我添加内容类型时也会出现相同的错误。此问题发生在所有4个主要HTTP请求上:GET、POST、PUT和DELETE。如果您的代码在4.5而不是3.5下工作,那么调试此问题的最简单方法是使用工具,例如Fiddler,然后在.NET4.5下运行,然后在.NET3.5下运行,看看这两个请求之间有什么区别。我刚刚测试了WebClient类,但它不起作用。错误似乎是相同的,因此它必须是HttpWebRequest对象内具有KeepAlive或ServicePoint.Expect100Continue的内容。我将它们设置为false,但它们仍然不起作用。