DSからtwitterに投稿するには(4)
Basic認証のためのBASE64エンコード、UTF-8文字コード対応、この2つの対応が終わり、あと1つ、UTF-8文字コードの16進数表記ができれば、twitter投稿が簡単にできるはず、ということで、UTF-8文字コードを16進数表記に変換するプログラムを作りました。
void moji216( unsigned char *sdata, char *dText, int byte );
簡単な変換ですが、sdataの文字列を16進数変換して、dText配列に入れるプログラムです。アルファベットと数字は無変換です。
このプログラムを用いると、「twitterに投稿します。」という文字が「twitter%E3%81%AB%E6%8A%95%E7%A8%BF%E3%81%97%E3%81%BE%E3%81%99%83%80%82」と変換されます。
//************************************************** // 16進数表記に変換 //************************************************** void moji216( unsigned char *sdata, char *dText, int byte ) { int i, j; char t[5]; dText[0] = 0; j = 0; for( i=0; i<byte; i++ ){ if( *sdata==0 ){ break; } if( (*sdata>='0' && *sdata<='9') || (*sdata>='a' && *sdata<='z') || (*sdata>='A' && *sdata<='Z') ){ dText[j] = *sdata; dText[j+1] = 0; if( j>=byte ){ break; } j++; sdata++; } else{ if( j+3>=byte ){ break; } sprintf( t, "%%%02X", *sdata ); strcat( dText, t ); j += 3; sdata++; } } dText[j] = 0; }
httpヘッダ構造体の追加
twitterへのPOST対応をうけて、httpヘッダ構造体にメンバを追加しました。
//Httpのヘッダ設定用構造体 typedef struct HttpHeaderPara{ long RecvTime; //ソケットの受信待ち時間 long Portnum; //ポート番号 char *Get; //取得ファイル名(例 /abc/dfg.jpg) char *Post; //投稿データ char *Host; //ホスト名(例 www.xyz.com ) char *UserAgent; //User-Agent(例 Nintendo DS) char *Referer; //参照元(例 www.xyz.com/ ) char *Authorization; //認証 } HttpHeaderParam;
PostとAuthorizationが追加されています。
これらを使って簡単な自動投稿プログラムを作って見ました。投稿成功したので、その話はまた明日にでも。
今日はこの辺で・・・。
本当にやりたいことリスト
(ブログの終わりにやりたいことを書いておきたいと思います)
- 求職活動・・・このブログで興味を持った人一声かけてください。m(_ _)m
- Androidプログラム
- Web系のプログラム