arduinoとProcessingでフィジカルコンピューティングを始めましたが、Processingに関する情報が少なくて困っています。
レンタルサーバー上のデータをProcessingのhttpクライアントでアクセスして、シリアル通信でaduinoを操作しようと思いましたが、なぜかProcessingのサンプルにあるHttpClientのプログラムではアクセス出来ませんでした。(サンプルのプログラムでアクセスできるWebページと出来ないページがあるのはどうしてでしょうか?)
あれこれジタバタした結果、一応なんとかProcessingで目的のページにアクセスして情報を入手できるようになったので、忘備録として記載しておきます。
参考にさせてもらったのは、http://forum.processing.org/topic/http-post-processingに紹介されていた、http://www.jackkern.com/downloads/examples/processing/PostFromProcessing.zipのプログラムです。
どうも上記のように工夫するとjavaのコードがそのままProcessingで使える可能性があるみたいですね。
で、一部を変更して、下記のような形で、一応アクセスした内容をテキストとして利用できるようになりました。下記を実行するには、上記のzipファイルにあるcodeフォルダーの内容が必要となります。(POSTが必要ない場合は、POSTのパラメーターはそのまま無視しても大丈夫みたいです。)
色々と超初心者ですので、お気づきの点は教えて頂けると助かります。
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
void setup()
{
String url = "http://xxx.yyy.zzz.jp/aaa.bbb";//URL address
String texts = "";
try
{
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost( url );
HttpParams postParams = new BasicHttpParams();
postParams.setParameter( "your_name", "John Smith" );// For Post
postParams.setParameter( "fruit", "Apricot" ); // Configure the form parameters
httpPost.setParams( postParams );
println( "executing request: " + httpPost.getRequestLine() );
HttpResponse response = httpClient.execute( httpPost );
HttpEntity entity = response.getEntity();
texts = EntityUtils.toString(entity);
println("----------------------------------------");
println( response.getStatusLine() );
println("----------------------------------------");
println( texts );
if( entity != null ) entity.consumeContent();
if (texts.equals("39") == true) println("You got it!!");
// When HttpClient instance is no longer needed,
// shut down the connection manager to ensure
// immediate deallocation of all system resources
httpClient.getConnectionManager().shutdown();
} catch( Exception e ) { e.printStackTrace(); }
exit();
}



