C#http Post在webresponse中没有得到任何东西

标签 c# post httpwebrequest httpwebresponse

这是我的请求和响应代码。

System.IO.MemoryStream xmlStream = null;
HttpWebRequest HttpReq = (HttpWebRequest)WebRequest.Create(url); 
xmlStream = new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(format));

byte[] buf2 = xmlStream.ToArray();
System.Text.UTF8Encoding UTF8Enc = new System.Text.UTF8Encoding();
string s = UTF8Enc.GetString(buf2);
string sPost = "XMLData=" + System.Web.HttpUtility.UrlDecode(s);
byte[] bPostData =  UTF8Enc.GetBytes(sPost);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 
request.ContentType = "application/x-www-form-urlencoded";
HttpReq.Timeout = 30000;  
request.Method = "POST"; 
request.KeepAlive = true; 
using (Stream requestStream = request.GetRequestStream()) 
{
    requestStream.Write(bPostData, 0, bPostData.Length); 
    requestStream.Close(); 
}

string responseString = "";
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
using (StreamReader sr = new StreamReader(response.GetResponseStream())) 
{ 
    responseString = sr.ReadToEnd(); 
}

此代码的任何部分都不会崩溃。 “格式”字符串是其中包含 XML 的字符串。最后,当您尝试查看 responseString 中的内容时,它是一个空字符串。我应该看到从 URL 发回给我的 XML。此代码中是否缺少某些内容?

最佳答案

我建议简化这段困惑的代码:

using (var client = new WebClient())
{
    var values = new NameValueCollection
    {
        { "XMLData", format }
    };
    byte[] resultBuffer = client.UploadValues(url, values);
    string result = Encoding.UTF8.GetString(resultBuffer);
}

如果您想直接在 POST 正文中上传 XML,则不应使用 application/x-www-form-urlencoded 作为内容类型。您可能应该指定正确的内容类型,如下所示:

using (var client = new WebClient())
{
    client.Headers[HttpRequestHeader.ContentType] = "text/xml";
    var data = Encoding.UTF8.GetBytes(format);
    byte[] resultBuffer = client.UploadData(url, data);
    string result = Encoding.UTF8.GetString(resultBuffer);
}

关于C#http Post在webresponse中没有得到任何东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6077862/

相关文章:

javascript - 表单的 Post 请求将空的 ImmutableMultiDict 返回到 Flask

c# - HttpWeb 请求错误 : 503 server unavailable

Javascript、Razor/MVC3 中的 C# if 语句

php - 单击删除mysql行

c# - StreamSocket.ConnectAsync 在使用 VPN 时抛出异常 "HRESULT: 0x8007274C"

javascript - 提交后未在 $_POST 中获取任何值

http - "q=0.9,*/*;q=0.8"是什么意思

httpwebrequest - 使用 ServiceStack.Client 超时

C# 深入探讨 : Type Constraint

c# - 动态添加新的 lambda 表达式以创建过滤器