Androidアプリから帳票管理サーバのWeb APIを呼び出す
はじめまして、ソフトウェア開発部のKです。
ここのところ業務でAndroidアプリを開発していまして、それをネタにブログを書けと業務命令が下りました。
何回続くかわかりませんが、お暇なときにでも読んで頂ければ幸いです。
Web APIの呼び出し
弊社製品の帳票管理サーバには、Web APIが用意されています。
このAPIを呼び出すことで、ユーザアプリケーションから自由に帳票管理サーバの各機能にアクセスが可能です。
今回は最初ということでログオンを試したいと思います。
まずは、Web APIを呼び出すクラスを作成します。
Web APIの呼び出しはActivityには直接書けないので、AsyncTaskクラスを使ってバックグラウンドで動作させます。
Logon.java:
public class Logon extends AsyncTask<Object, Void, String> { Activity ac; public Logon(Activity ac) { this.ac = ac; } @Override protected void onPreExecute() { } @Override protected String doInBackground(Object... arg0) { Uri.Builder uri = new Uri.Builder(); uri.scheme("http"); uri.authority("hoge.co.jp"); uri.path("CrWebService/CrWebService.asmx/Logon"); uri.appendQueryParameter("userName", "user"); uri.appendQueryParameter("password", "pass"); HttpClient httpClient = new DefaultHttpClient(); HttpParams params = httpClient.getParams(); HttpConnectionParams.setConnectionTimeout(params, 3000); HttpConnectionParams.setSoTimeout(params, 3000); String s = ""; try { HttpUriRequest req = new HttpGet(uri.toString()); HttpResponse res = httpClient.execute(req); s = EntityUtils.toString(res.getEntity()); } catch (Exception e) { e.printStackTrace(); } return s; } @Override protected void onPostExecute(String result) { if ("".equals(result)) { Toast.makeText(ac, "ログオン成功", Toast.LENGTH_LONG).show(); } else { Toast.makeText(ac, "ログオン失敗", Toast.LENGTH_LONG).show(); } } }
次に、ActivityクラスのonCreateでLogonクラスを呼び出します。
TestActivity.java:
public class TestActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // ログオン処理 new Logon(this).execute(); } }
最後に、外部サーバへのアクセスを許可するために「android.permission.INTERNET」を許可します。
AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="jp.co.hos.test" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" /> <uses-permission android:name="android.permission.INTERNET"/> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:label="@string/app_name" android:name=".TestActivity" > <intent-filter > <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
実行
実行するとログインユーザが正しい場合「ログオン成功」とダイアログが表示されます。
以上でログオン処理は終了です。