文字化けしまくりで。

苦労しました。


string charset = Request.Form["charset"];

if(charset == null)
{
charset="utf-8";
}

System.IO.StreamReader reader = new System.IO.StreamReader(Request.InputStream);

string postData = reader.ReadToEnd();

string title = string.Empty;
string blog_name = string.Empty;
string excerpt = string.Empty;
string url = string.Empty;

string[] parts;
parts = postData.Split('&');

System.Text.Encoding encode = System.Text.Encoding.GetEncoding(charset);
for(int i=0;i<parts.Length;i++)
{
string [] str;
str = parts[i].Split('=');
if( str.Length > 1 )
{
if( str[0] == "title" ) title = HttpUtility.UrlDecode(str[1],encode);
if( str[0] == "blog_name" ) blog_name = HttpUtility.UrlDecode(str[1],encode);
if( str[0] == "excerpt" ) excerpt = HttpUtility.UrlDecode(str[1],encode);
if( str[0] == "url" ) url = HttpUtility.UrlDecode(str[1],encode);
}
}

うーん。。。情報が少ない。。。


apacheでいう、mod_rewriteをIISで実装するにはISAPI_Rewriteというモノをつかわなきゃいかんようです。

例えば

http://aaa.com/blog_id/


でアクセスした時に

http://aaa.com/blog.asp?blog_id=blog_id


に飛ばしたいときは

C:\Program Files\Helicon\ISAPI_Rewrite\httpd.iniに

[ISAPI_Rewrite]

RewriteRule /([0-9a-zA-Z]*) /test1.asp\?a=$1


と書けばOK。


?の前に\を入れないといけないようです。

今度仕事で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


トラバ送信は簡単に出来た、と思ったら日本語がうまくとびません。

これまた青柳さんのブログ に解決策が書いてありました。


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



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


続く。