2

ここに craigslist への投稿の例があります。http://www.craigslist.org/about/bulk_posting_interface (perl 言語)。

asp.net に craigslist の投稿例はありますか?

perl の例 (上記のリンクから) を asp.net に変換しましたが、それでもエラーが発生します。エラーは「サーバーがプロトコル違反をコミットしました。Section=ResponseStatusLine」です。事前に感謝しますここに私のコードがあります、

string xml = @"<?xml version='1.0'?><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='NYCBrokerHousingSample1'/><rdf:li rdf:resource='NYCBrokerHousingSample2'/> </items> <cl:auth username='fawad_ashfaq@hotmail.com' password='*******' accountID='14'/>  </channel> <item rdf:about='NYCBrokerHousingSample1'> <cl:category>fee</cl:category>     <cl:area>nyc</cl:area>  <cl:subarea>mnh</cl:subarea> <cl:neighborhood>Upper West Side</cl:neighborhood> <cl:housingInfo price='1450' bedrooms='0'                     sqft='600'/> <cl:replyEmail  privacy='C'>bulkuser@bulkposterz.net</cl:replyEmail> <cl:brokerInfo companyName='Joe Sample and Associates' feeDisclosure='fee disclosure here' /> <title>Spacious Sunny Studio in Upper West  Side</title> <description><![CDATA[  posting body here ]]></description> </item> </rdf:RDF>";    



    string BASE_URL = "https://post.craigslist.org/bulk-rss/post";
      HttpPost(BASE_URL, xml ); Private static string HttpPost(string url, string postData)
{
    HttpWebRequest request = null;
    Uri uri = new Uri(url);
    request = (HttpWebRequest)WebRequest.Create(uri);
    request.Method = "POST";
    request.ContentType = "application/x-www-form-urlencoded";
    request.ContentLength = postData.Length;
    using (Stream writeStream = request.GetRequestStream())
    {
        UTF8Encoding encoding = new UTF8Encoding();
        byte[] bytes = encoding.GetBytes(postData);
        writeStream.Write(bytes, 0, bytes.Length);
    }
    string result = string.Empty;

    request.ProtocolVersion = System.Net.HttpVersion.Version10;
    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);
    }
    return result;

} // end HttpPost
4

2 に答える 2

0

Fiddle2(windows) または Charles(os x) を使用して http 要求と応答をキャプチャし、perl の例と asp.net の例の違いを比較すると、「バグ」が見つかる場合があります。

于 2012-09-15T11:12:27.020 に答える
0

追加することでこれを回避しました

request.ProtocolVersion = System.Net.HttpVersion.Version10;
于 2014-02-04T19:56:34.410 に答える