2017年06月17日


簡易サンプルと詳細リンク : okhttp で送信

okhttp

Android Studio なら、GRADLE で compile 'com.squareup.okhttp3:okhttp:3.8.0'

GET

Swing の JTable に 1) WEBのJSON2次元配列。2) WEB の JSON配列 を取り込んで表示する( Google Gson と okhttp を使用 )
String url = "https://ドメイン/ディレクトリ/json/syain_array.php";
String result ="[\"error\"]";
OkHttpClient client = new OkHttpClient();
Request.Builder builder = new Request.Builder();
builder.url(url);
Request request = builder.build();

Response response = null;
try {
	response = client.newCall(request).execute();
	result = response.body().string();
}
catch (IOException e) {
	e.printStackTrace();
}


POST

Android Studio : OkHttp v3.8.0 で WEBアプリに POST 送信を行う
ArrayList<String> data = new ArrayList<String>();
data.add("winofsql@gmail.com");
data.add("OkHttp で送信テスト(Android Studio)");
data.add("日本語\r\n表示");

AsyncTask<ArrayList<String>,Void,String> async;
// 非同期実行用オブジェクト
async = new AsyncTask<ArrayList<String>, Void, String>() {
	@Override
	protected String doInBackground(ArrayList<String>... params) {

		ArrayList<String> data = params[0];

		// HTTP 処理用オプジェクト
		OkHttpClient client = new OkHttpClient();

		// POST 用 FormBody の内容の作成
		FormBody.Builder formbodyBuilder = new FormBody.Builder();
		formbodyBuilder.add("to", data.get(0));
		formbodyBuilder.add("subject", data.get(1));
		formbodyBuilder.add("body", data.get(2));

		// 送信用ユニットの作成
		FormBody formbody = formbodyBuilder.build();

		// 送信用のデータを作成
		Request.Builder requestBuilder = new Request.Builder();
		String url = "https://ドメイン/lightbox/mail/send.php";
		requestBuilder.url(url);
		requestBuilder.post(formbody);
		Request request = requestBuilder.build();

		// 受信用のオブジェクトの準備
		Call call = client.newCall(request);
		String result = "";

		// 送信と受信
		try {

			Response response = call.execute();
			result = response.body().string();

		} catch (Exception e) {
			e.printStackTrace();
		}

		return result;
	}

	@Override
	protected void onPostExecute(String s) {
		Log.i("lightbox", s);
		// 画面に対してのアクセスはここから行います


	}
};

// 実行
async.execute(data);

マルチパート POST

WindowBuilder(Swing) で、WEBカメラを使用して画像を保存して okhttp で WEBサーバへアップロードする

※ okhttp には File オブジェクトと mime を渡します。

OkHttpClient client = new OkHttpClient();

MultipartBody.Builder multipartBodyBuilder = new MultipartBody.Builder();
multipartBodyBuilder.setType(MultipartBody.FORM);
multipartBodyBuilder.addFormDataPart(
	"target",
	targetFile.getName(),
	RequestBody.create(MediaType.parse("image/png"),targetFile)
);
RequestBody requestBody = multipartBodyBuilder.build();

// 送信用のデータを作成
Request.Builder requestBuilder = new Request.Builder();
String url = "https://ドメイン/パス/file_upload.php";
requestBuilder.url(url);
requestBuilder.post(requestBody);
Request request = requestBuilder.build();

// 受信用のオブジェクトの準備
Call call = client.newCall(request);
String result = "";

// 送信と受信
try {

	Response response = call.execute();
	result = response.body().string();

} catch (Exception ex) {
	ex.printStackTrace();
}




posted by at 2017-06-17 14:34 | Comment(0) | リンク | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します