2012年8月24日金曜日

Android ASP.NET(MVC2)で作成したWebAPIに接続する その3

Android ASP.NET(MVC2)で作成したWebAPIに接続する その1
Android ASP.NET(MVC2)で作成したWebAPIに接続する その2

前回までに作成したWebAPIにAndroidアプリからアクセスするプログラムを作ります。

MainActivtyを作成し、ボタンを1つ配置します。

MainActivtyのレイアウトMainActivty
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

   <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_marginTop="21dp"
        android:onClick="button1Click"
        android:text="button1" />

</RelativeLayout>


MainActivtyのコード
package com.example.helloandroid;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
    
    /*
     * button1クリック時の処理
     */
    public void button1Click(View view) {
        //送信する文字列
        StringBuilder testXml = new StringBuilder();
        testXml.append("");
        testXml.append("");
        testXml.append("");
        testXml.append("1");
        testXml.append("田中");
        testXml.append("");
        testXml.append("");
        testXml.append("2");
        testXml.append("山田");
        testXml.append("");
        testXml.append("");
        testXml.append("3");
        testXml.append("野原");
        testXml.append("");
        testXml.append("");
        //DefaultHttpClientを生成
        HttpClient httpClient = new DefaultHttpClient();
        //HttpPostを生成
        HttpPost req = new HttpPost("http://IPアドレス:ポート番号/AndroidTest/Test");
        //パラメータ作成
        List<NameValuePair> params = new ArrayList<namevaluepair>(1);
        params.add(new BasicNameValuePair("testxml", testXml.toString()));
        //リクエスト
        String s = "";
        try {
         
         req.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
         HttpResponse res = httpClient.execute(req);
         int status = res.getStatusLine().getStatusCode();
         if (status == HttpStatus.SC_OK) {
           s = EntityUtils.toString(res.getEntity());
         } else {
           s = "接続失敗" + String.valueOf(status);
         }
        } catch (Exception e) {
           e.printStackTrace();
        }
        Toast.makeText(MainActivity.this, s, Toast.LENGTH_LONG).show();   
    }
}


マニフェストファイルの修正
インターネットへの接続を許可する設定を追加します。
<uses-permission android:name="android.permission.INTERNET" />


実行結果

0 件のコメント: