青柳臣一 blog : .NET や C# がメインの blog

.NET や C# がメインの blog
投稿数 - 548, コメント - 272, トラックバック - 204

.Text の修正(トラックバック関連)

.Text はトラックバックに対応してるんですが、日本語を使ってるとうまく動きません。
文字化けするとかいう次元じゃなく、トラックバックを送る途中で例外が出て失敗しちゃいます。


Dottext.Framework\Tracking\Notification.cs 81行目付近
    if(entry.HasDescription)
    {
        notify.Description = entry.Description;
    }
    else
    {
        //entry.Description = entry.Title;    
        notify.Description = entry.Title;    
    }
上記のように entry.Description = entry.Title; というのは明らかにおかしいので notify.Description = entry.Title; に修正。


Dottext.Framework\Tracking\TrackBackNotificationProxy.cs 81行目付近
    //string parameters = "title=" + HtmlEncode(title) + "&url=" + HtmlEncode(link) + "&blog_name=" + HtmlEncode(blogname) + "&excerpt=" + HtmlEncode(description);
    string parameters = "title=" + HttpUtility.UrlEncode(Encoding.UTF8.GetBytes(title))
                      + "&url=" + HttpUtility.UrlEncode(link)
                      + "&blog_name=" + HttpUtility.UrlEncode(Encoding.UTF8.GetBytes(blogname))
                      + "&excerpt=" + HttpUtility.UrlEncode(Encoding.UTF8.GetBytes(description))
                      + "&charset=utf-8";
もともとのコードはまったく文字コードのことを考えてない。なので、utf-8 に変換してやるように修正。ここが例外が出る原因で、utf-16 のままだと String.Length と実際に送信するバイト数が違うために失敗してしまいます。
ちなみに、下記のように「トラックバックは utf-8 でいいんじゃないの?」という方向のようですので、とりあえずはこれでいいんじゃないかと思います。

Milano::Monolog 「Trackbackの文字コード指定方法最終(予定)」
http://rebecca.ac/milano/mt/archives/000396.html

投稿日時 : 2004年1月26日 21:40

トラックバックは下記のURLにpingを送信してください。
TrackBack URL: http://www.divakk.co.jp/blog/aoyagi/services/trackbacks/437.aspx

フィードバック

# re: .Text の修正(トラックバック関連)

うんうん気になってたんですよ(爆)
ありがとうございます

うちも近いうちに直そう...
2004/01/26 22:05 | チャム&レオ

# 青柳臣一blogさん、「.TEXT」のトラックバック対応方法を公開

最近、ASP.NETな人たちで人気急上昇中のブログ ツール「.TEXT」。今まで「.TEXT」のトラックバック機能は日本語環境でうまく動作していなかったみたいなのですが、「青柳臣一blog」さんが日本語環境でのトラックバック機能の修正方法を公開されています。
2004/01/27 1:23 | #BLOG (トラックバック)

# re: .Text の修正(トラックバック関連)

はじめまして。一色と申します。よろしくお願いします。

「.Text」のトラックバックの修正方法の公開、ありがとうございます。

で、突然ですが、要望があります。

いきなり要望を出すなんて非常に恐縮なのですが、TrackBack送信先URLを、できれば分かりやすいところ(例えば、[フィードバック]の上あたりとか)に表示していただけるとありがたいのですが・・・。

私はRSSフィードの中からTrackBack URLを探し出して送信してみたのですが、すごく分かりにくいと思いました。

ご対応いただけると嬉しいです。
では。
2004/01/27 1:47 | #BLOG(一色政彦)

# re: .Text の修正(トラックバック関連)

おお、青柳さん、ぜひメーリングリストに投げてください :)

私も調べないといけないなぁと思っていたネタでした。これ。
2004/01/27 12:48 | はらみず

# トラックバックを実装してみて

トラックバックの実装には、大きく2つの問題がある。1つはトラックバックを受けるメカニズムの信頼性で、これは何もトラックバックに限った話ではなく、インターネット...
2004/02/10 15:03 | 何はなくとも XML InfoSet (トラックバック)

# トラックバックするための修正

トラックバックするための修正
2004/03/01 19:18 | 安藤@大分のBlog (トラックバック)

# トラックバックについて

トラックバックって日本語の場合は修正が必要なんですね。
2004/07/09 17:11 | Kilala's .TEXT (トラックバック)

# .Textのトラックバックの問題

.Textのトラックバックの問題
2004/07/12 0:02 | パコログ (トラックバック)

# .Textのトラックバックの問題

.Textのトラックバックの問題
2004/07/13 1:26 | パコログ (トラックバック)

# .Text バイナリ : トラックバック & RSS 修正版

.Text を使う上で日本語に関する修正を適用したバイナリをダウンロードできるようにしておきました。修正しているのは2点になります。

2004/08/22 15:23 | 原水商店 (トラックバック)

# 日本語トラックバック関連修正

青柳さんの記事を参考にさせていただきました。
2004/12/30 22:55 | Rachael を待ちながら (トラックバック)

# 日本語トラックバック関連修正

青柳さんの記事を参考にさせていただきました。
2004/12/30 22:58 | Rachael を待ちながら (トラックバック)

# .text

今度仕事でASP.NETを利用してブログサイトを作ることになりました。
.NET初心者のモクゾーと申します。

PHPでブログサイトを作ったときは参考コードが腐るほどあったが.NETではほとんどありません。

XML-RPCが良くわかってないので.textを参考に
更新Ping送信部分、トラバ送信部を作ろうと思います。
それ以外は自分で作ったほうが早そうなので自分で作ります。

以下.textより。
・更新Ping送信クラス
public class WeblogsNotificatinProxy : XmlRpcClientProtocol

・関連DLL(XML-RPC.NET

CookComputing.XmlRpc.dll

WeblogsNotificatinProxyというクラスは実際には

[XmlRpcUrl("http://www.weblogs.com/
")]
public class WeblogsNotificatinProxy : XmlRpcClientProtocol

となっています。
1行目はカスタム属性といわれていますが.NET初心者の私にとってカスタム属性というのが
何なのかさっぱりわかりません。

複数サイトにpingを飛ばしたい場合はどうすればいいのでしょう?
青柳さん
のページを参考に

こんな風にしてみました。

private const string p1 ="http://bulkfeeds.net/rpc
";
private const string p2 ="http://ping.bloggers.jp/rpc/
";
private const string p3 ="http://ping.cocolog-nifty.com/xmlrpc
";
private const string p4 ="http://ping.myblog.jp/
";
private const string p5 ="http://blog.goo.ne.jp/XMLRPC
";

[XmlRpcUrl(p1)]
public class SendPing1 : WeblogsNotificatinProxy{}
[XmlRpcUrl(p2)]
public class SendPing2 : WeblogsNotificatinProxy{}
[XmlRpcUrl(p3)]
public class SendPing3 : WeblogsNotificatinProxy{}
[XmlRpcUrl(p4)]
public class SendPing4 : WeblogsNotificatinProxy{}
[XmlRpcUrl(p5)]
public class SendPing5 : WeblogsNotificatinProxy{}

public class WeblogsNotificatinProxy : XmlRpcClientProtocol
 {
(中身変更なし)
}

あきらかにやり方が間違ってると思われるのでカスタム属性を詳しく勉強して書き換えたいと思います。


・トラバ送信クラス
public class TrackBackNotificationProxy

・トラバ送信関連クラス
public  class BlogRequest

トラバ送信は簡単に出来た、と思ったら日本語がうまくとびません。
これまた青柳さんのブログ
に解決策が書いてありました。

ありがとう。青柳さん。問題は解決しました。


あとはトラバ受信ですがこれは簡単なので自分で作ろうと思います。

続く。
2005/06/08 17:41 | ASP.NETでブログを作る (トラックバック)

コメントの投稿

タイトル  
名前  
URL
コメント   
Protected by Clearscreen.SharpHIPこの絵に表示されている文字列を入力してください (半角で4文字です):