首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HttpWebRequest导致响应不以HTTP.Data开头

HttpWebRequest导致响应不以HTTP.Data开头
EN

Stack Overflow用户
提问于 2012-12-28 00:07:53
回答 1查看 845关注 0票数 0

我正在尝试通过执行以下操作来使用craigslist批量发布:

代码语言:javascript
复制
HttpWebRequest request = null;
Uri uri = new Uri("https://post.craigslist.org/bulk-rss/post");
request = (HttpWebRequest)WebRequest.Create(uri);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = FormattedXmlDocument.InnerXml.Length;
using (Stream writeStream = request.GetRequestStream())
{
    UTF8Encoding encoding = new UTF8Encoding();
    byte[] bytes = encoding.GetBytes(FormattedXmlDocument.InnerXml);
    writeStream.Write(bytes, 0, bytes.Length);
}
string result = string.Empty;

request.ProtocolVersion = System.Net.HttpVersion.Version11;
request.KeepAlive = false;
try
{
    using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
    {
        using (Stream responseStream = response.GetResponseStream())
        {
            using (System.IO.StreamReader readStream = new System.IO.StreamReader(responseStream, Encoding.UTF8))
            {
                result = readStream.ReadToEnd();
            }
        }
    }
}
catch (Exception exp)
{
    // MessageBox.Show(exp.Message);
}

当执行此行代码时

代码语言:javascript
复制
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())

我得到了一个例外:

代码语言:javascript
复制
The remote server returned an error: (500) Internal Server Error.

我使用fiddler检查请求,得到以下错误:

代码语言:javascript
复制
Response does not start with HTTP.Data:

包装看起来是这样的:

代码语言:javascript
复制
POST https://post.craigslist.org/bulk-rss/post HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: post.craigslist.org
Content-Length: 739
Expect: 100-continue
Connection: Keep-Alive

<rdf:RDF xmlns="http://purl.org/rss/1.0/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cl="http://www.craigslist.org/about/cl-bulk-ns/1.0"><channel><items><rdf:li rdf:resource="TestJobPost1" /></items><cl:auth username="cl@flazingo.com" password="2749saturn" accountID="14" /></channel><item rdf:about="TestJobPost1"><cl:category>sof</cl:category><cl:area>nyc</cl:area><cl:subarea>stn</cl:subarea><cl:neighborhood>Grasmere</cl:neighborhood><cl:jobInfo compensation="100000.00" telecommuting="0" partTime="0" contract="0" nonprofit="0" internship="0" disability="0" recruitersOK="0" phoneCallsOK="0" okToContact="0" okToRepost="0" /><title>First Position</title><description><![CDATA[teset]]></description></item></rdf:RDF>

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-28 01:00:43

写入request.GetRequestStream()将开始向服务器发送数据。

在此之后设置请求属性将破坏协议。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14057587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档