はうすてんぼぶ

コードかいてて疑問に思ったことや、興味あることをつらつらと暇なときに書く場所、ここはそんな場所

わっしょいわしょしょい!

研究なんてそっちのけでViewerのほう作ってる
誰か,誰か俺を殺せ!


ところでスレッドへの書き込みの件ですが,
なんかもう完全に手詰まりで,欝で死のうとか思ってた.
検索キーワードすら思いつかない始末で,「もう誰か俺を殺せ」といつしか口ずさむ
そんな毎日(一週間)が過ぎていた


が,がっ!
やっと発見できました.クリティカルな資料が!
ここ□と,ここ□と,ここ□



なるほどね,ぜんぜん意味はわからないけど,そうやるのね


結構調べていくうちに,テキスト情報のPOSTはわかったんだけど,
JavaPHPにダイレクトに画像をどうPOSTで送信するのかがわからなくて結構詰まってた.
そもそもHTTPについての知識も希薄なのに、どうしろとっ!(学べ)


upfile="ファイルの絶対パス"とかでやっても反映されないから,うーんと思ってたら
"multipart/form-data"ってのに気づいたら後は上のありがたい参考サイト様をガンガン発見できました.


結果的に最低限書き込むためには下記のようにすればおっけーです.たぶん…

                static int threadID = 113205773;//スレッドID
       static String BASE_URL = "http://may.2chan.net/b/futaba.php?guid=on"; //対象となるPHP
static String FILE_URL = "C:\\test.jpeg";//ファイルの絶対パス

/* 省略 */

URL url = new URL(urlString);

String bnd = "utsudasinouorewokoroseee";
//System.out.println(url.getContent());

HttpURLConnection uc = (HttpURLConnection) url.openConnection();
uc.setDoOutput(true);//POST可能にする
 OutputStream os;

FileInputStream inps = new FileInputStream (FILE_URL);

uc.setRequestProperty ( "Content-Type", "multipart/form-data; boundary=" + bnd );

StringBuffer sb = new StringBuffer();
os = uc.getOutputStream();

sb.setLength(0);
sb.append ( "--" );
sb.append ( bnd );
sb.append ( "\r\n" );
os.write ( sb.toString().getBytes() );
os.write("Content-Disposition: form-data; name='com'".getBytes());
os.write("\r\n\r\n".getBytes());
os.write("test".getBytes());
os.write("\r\n".getBytes());


sb.setLength(0);
sb.append ( "--" );
sb.append ( bnd );
sb.append ( "\r\n" );
os.write ( sb.toString().getBytes() );
os.write("Content-Disposition: form-data; name='email'".getBytes());
os.write("\r\n\r\n".getBytes());
os.write("sage".getBytes());
os.write("\r\n".getBytes());

sb.setLength(0);
sb.append ( "--" );
sb.append ( bnd );
sb.append ( "\r\n" );
os.write ( sb.toString().getBytes() );
os.write("Content-Disposition: form-data; name='resto'".getBytes());
os.write("\r\n\r\n".getBytes());
os.write("113212617".getBytes());
os.write("\r\n".getBytes());

sb.setLength(0);
sb.append ( "--" );
sb.append ( bnd );
sb.append ( "\r\n" );
os.write ( sb.toString().getBytes() );
os.write("Content-Disposition: form-data; name='mode'".getBytes());
os.write("\r\n\r\n".getBytes());
os.write("regist".getBytes());
os.write("\r\n".getBytes());

sb.setLength(0);
sb.append ( "--" );
sb.append ( bnd );
sb.append ( "\r\n" );


os.write ( sb.toString().getBytes() );

os.write ( "Content-Disposition: form-data;".getBytes() );
os.write ( "name=\"upfile\";".getBytes() );
os.write ( "filename=upload.jpg\r\n".getBytes() );
os.write ( "Content-Type: image/pjpeg\r\n".getBytes() );
os.write ( "\r\n".getBytes() );

int wLength;
byte[] byteData = new byte[128];
while ( (wLength=inps.read(byteData)) != -1 ) {
os.write ( byteData, 0, wLength );
}
os.write ( "\r\n".getBytes() );

sb.setLength ( 0 );
sb.append ( "--" );
sb.append ( bnd );
sb.append ( "--" );
os.write ( sb.toString().getBytes() );
System.out.println(os.toString());
inps.close();

os.close();
uc.connect();

InputStream inputStream = uc.getInputStream();
InputStreamReader isr = new InputStreamReader ( inputStream );
int resChar;

sb.setLength ( 0 );
while ( (resChar = isr.read()) != -1 ) {
sb.append ( (char)resChar );
}

System.out.println ( sb.toString() );

// 応答コード&メッセージ
System.err.println("【応答コード】 " + uc.getResponseCode()
+ " " + uc.getResponseMessage() );

inputStream.close();

uc.disconnect();


あとはこれをAndroidで動くようにすれば…いけるはずだし!
明日やるし!帰るし!