※ 日本アンドロイドの会の会員のかた(Twitter ID: @dietposter さん)からのアドバイスにより
HTTPRequestHelper クラスを用いずに、HttpURLConnection クラスのみで HTTP 送信を
行えることがわかったため本プログラムを全面的に書き換えました。
(>@dietposter さん: 貴重なアドバイスありがとうございました。)
< Android 版 I/O制御の送信機能デモプログラム >
/*
Androidケータイでおもちゃのモータの制御方法(停止/正転/斑点)を選択して送信する
*/
package test.HttpTest3;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.RadioGroup;
import android.widget.Button;
import android.widget.TextView;
import test.HttpTest3.R;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
/**
* I/O Command code send Application by Android Java
**/
public class HttpTest3 extends Activity {
private static final String CLASSTAG = HttpTest3.class.getSimpleName();
private static final String URL_CGI = "http://www3.biwako.ne.jp/~mirai954/cwrite2.cgi";
private static final String POST_MSG = "?MSG=";
private static final String POST_METHOD = "POST";
private static final String LOGTAG = "HttpTest3";
private TextView output;
private Button button;
private RadioGroup radioGroup;
private String sFace = "";
@Override
public void onCreate(final Bundle icicle) {
super.onCreate(icicle);
this.setContentView(R.layout.http_test3);
this.output = (TextView) findViewById(R.id.apache_output);
this.button = (Button) findViewById(R.id.send_button);
this.button.setOnClickListener(new OnClickListener() {
public void onClick(final View v) {
output.setText("");
Log.d(LOGTAG, " " + CLASSTAG + " POST Message NOT
set & send");
sendPostMethod();
}
});
radioGroup = (RadioGroup) findViewById(R.id.RadioGroup);
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener()
{
public void onCheckedChanged(RadioGroup group, int checkedId) {
// make face code from RadioButton
switch (checkedId) {
case R.id.radio_0: // 停止
sFace = "0";
break;
case R.id.radio_1: // 正転
sFace = "1";
break;
case R.id.radio_2: // 逆転
sFace = "2";
break;
}
}
});
};
private void sendPostMethod() {
URL url = null;
String sLine = "";
try {
url = new URL( URL_CGI );
} catch (MalformedURLException e) {
Log.d(LOGTAG, " " + CLASSTAG + " MalformedURLException");
}
if (url != null) {
try {
HttpURLConnection urlCon = (HttpURLConnection) url.openConnection();
urlCon.setRequestMethod (POST_METHOD);
urlCon.setDoInput (true);
urlCon.setDoOutput (true);
String query = POST_MSG + sFace;
DataOutputStream out = new DataOutputStream (urlCon.getOutputStream
());
out.writeBytes (query);
out.flush ();
out.close ();
// 内容が nul 以外なら読み出す
BufferedReader bin = new BufferedReader(new InputStreamReader(urlCon.getInputStream()));
while ((sLine = bin.readLine()) != null) {
output.setText((" "+ sLine));
}
bin.close(); // ファイル読み出し終了
urlCon.disconnect(); // 接続終了
} catch (IOException e) {
Log.d(LOGTAG, " " + CLASSTAG + " IOException");
}
} else {
Log.d(LOGTAG, " " + CLASSTAG + " url==null");
}
}
}