Thomas Bandt

Über mich | Kontakt | Archiv

Trackback mit .NET & C# senden II

Nachdem es letztens kurz und schmerzlos ging, musste ich noch etwas nachlegen. Denn: viele Seiten tragen die URL, an die der Trackback gesendet werden muss, in Metadaten mit sich herum. Man muss also die Trackback-Url, die in Form von

auf der Seite zu finden ist erst auslesen, und sein ziel dann ggf. ändern. Quick'n dirty könnte das so aussehen:

foreach (string targetUrl in targetUrlList)
{

   // Trackback-URL holen (http://trackback.unblogbar.com/)
   WebRequest request = WebRequest.Create(targetUrl);
   request.Method = "GET";

   WebResponse response = request.GetResponse();
   Stream dataStream = response.GetResponseStream();
   StreamReader reader = new StreamReader(dataStream);
   string content = reader.ReadToEnd();
   reader.Close();
   dataStream.Close();

   Regex findTBUrl = new Regex("trackback:ping=\"(.*)\"", RegexOptions.IgnoreCase);
   string finalTargetUrl = findTBUrl.Match(content).Groups[1].Value;

   if (!string.IsNullOrEmpty(finalTargetUrl))
      request = WebRequest.Create(finalTargetUrl);
   else
      request = WebRequest.Create(targetUrl);

   // Trackback senden
   request.Method = "POST";
   string postData = string.Format("url={0}&blog_name={1}&title={2}&excerpt={3}", url, blogName, title, excerpt);
   byte[] byteArray = Encoding.UTF8.GetBytes(postData);
   request.ContentType = "application/x-www-form-urlencoded";
   request.ContentLength = byteArray.Length;
   dataStream = request.GetRequestStream();
   dataStream.Write(byteArray, 0, byteArray.Length);
   dataStream.Close();

}

Kommentare

  1. Jan schrieb am Freitag, 30. März 2007 06:59:00 Uhr:

    Hallo Thomas, ich hätte da ein Frage zu dem Thema. Ich habe auch ein eigenes Weblog programmiert, nur um mal zu wissen wie das ganze funktioniert. Das Weblog befülle ich mit dem Windows Live Writer über die MetaWeblog-API. Diese unterstützt aber nicht die Angabe der Url die ich brauche, um beim Erstellen eines neuen Blogbeitrages einen Trackback abzusetzen. Oder habe ich da etwas übersehen? Danke!


« Zurück  |  Weiter »