関連する記事 OkHttp v3.8.0 jar( と okio 1.13.0.jar ) を Eclipse のプロジェクトに追加して一般的な POST 送信を行う Eclipse の一般的な Java からの送信を AsynTask を使用して Android Studio から送信しました。送信する文字列は、ArrayList にセットして、AsyncTask<ArrayList<String>,Void,String> として定義して引き渡しています。
package com.example.lightbox.posttest; import android.os.AsyncTask; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import java.util.ArrayList; import okhttp3.Call; import okhttp3.FormBody; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; public class MainActivity extends AppCompatActivity implements View.OnClickListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button = (Button) MainActivity.this.findViewById(R.id.button); button.setOnClickListener(this); } @Override public void onClick(View v) { if ( v.getId() == R.id.button) { Log.i("lightbox", "クリックされました"); CallPost(); } } private void CallPost() { 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); } }
Module の build.gradle
apply plugin: 'com.android.application' android { compileSdkVersion 23 buildToolsVersion "25.0.2" defaultConfig { applicationId "com.example.lightbox.posttest" minSdkVersion 23 targetSdkVersion 23 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:23.4.0' compile 'com.android.support.constraint:constraint-layout:1.0.2' testCompile 'junit:junit:4.12' compile 'com.squareup.okhttp3:okhttp:3.8.0' }
※ AndroidManifest.xml には、<uses-permission android:name="android.permission.INTERNET" /> を追加。
|
【2017 Android Studioの最新記事】
- 別に納品するわけでは無いので、Android の ListView のカスタマイズなんてこれで十分でしょ / TestArrayAdapter バージョン2
- Java : Class 構造より、update 文を作成する
- ViewSwitcher を使用した2画面アプリ (5) : SQLiteデータを更新する
- ViewSwitcher を使用した2画面アプリ (4) : SQLiteデータをインポートしてリストビューに表示する
- Android Studio にインポートして使用する SQLite データベースを MDB より作成する VBScript
- ViewSwitcher を使用した2画面アプリ (3) : 画面部分の作成と画面切り替えテスト『画面をコントロールする Helper クラスの作成』
- ViewSwitcher を使用した2画面アプリ (2) : 画面部分の作成と画面切り替えテスト『画面の作成』
- ViewSwitcher を使用した2画面アプリ (1) : 画面部分の作成と画面切り替えテスト『メニューの作成』
- OkHttp を使用した HttpAccess クラスで Web 上の 画像をダウンロードして表示するテンプレート
- OkHttp を使用した HttpAccess クラスで Web 上の PHP アプリに対してファイルをアップロードするテンプレート
- OkHttp を使用した HttpAccess クラスで Web 上の掲示板に投稿(POST)するテンプレート
- OkHttp を使用した HttpAccess クラスで Web 上のデータを取得(GET)して ListView を表示するテンプレート
- Okhttp を使用した、GET、POST、ファイルアップロードを楽に実装できる HttpAccess クラス
- Android の assets フォルダーに保存した 400x320 の画像ファイルの扱い
- Android の drawable フォルダーに保存した 400x320 の画像ファイルの6種類の扱いと Density
- Android での保存用テキストデータの扱いを okio で簡素化する
- Android 6.0 : テストの為の Runtime Permission の対応を自動化するテンプレート
- Android Studio : Runtime Permission 等の裏方作業を MainActivity にさせて、本来の処理は継承したサブクラスで行う( カメラを呼び出して画像を保存させ、I..
- Android 6.0 エミュレータで 複数の Runtime Permission の対応を簡潔に吸収するクラス( CheckMyPermission )
- Android 6.0 の Runtime Permission に対応する前に、AndroidManifest.xml に権限の記述の必要無いプライベートな書き込みで情報を収集する