※ 日本アンドロイドの会の会員のかた(Twitter ID: @dietposter さん)からのアドバイスにより
HTTPRequestHelper クラスを用いずに、HttpURLConnection クラスのみで HTTP 送信を
行えることがわかったため本プログラムを全面的に書き換えました。
(>@dietposter さん: 貴重なアドバイスありがとうございました。)
< Android 版 インターネット通信機能デモプログラム(2) >
/*
Androidケータイで「顔表情コード」を選択して送信する
*/
package test.HttpTest2;
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;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.RadioGroup;
import android.widget.TextView;
/**
* I/O Command code send Application by Android Java
**/
public class HttpTest2 extends Activity {
private static final String CLASSTAG = HttpTest2.class.getSimpleName();
private static final String URL_CGI = "http://www3.biwako.ne.jp/~mirai954/cwrite.cgi";
private static final String POST_MSG = "?MSG=";
private static final String POST_METHOD = "POST";
private static final String LOGTAG = "HttpTest2";
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 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;
case R.id.radio_3:
sFace = "3";
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");
}
}
}