ソース掲示板




すべてから検索

キーワード   条件 表示 現行ログ 過去ログ トピックス 名前 本文
Android : POST 送信。Eclipse(ADT) を使ったコード作成手順 / MessageBox.java と HttpPostAndXml.java
日時: 2013/06/22 04:47
名前: lightbox





メンテナンス

TextView に 枠線を付加 ( No.1 )
日時: 2013/06/22 04:42
名前: lightbox


日時: 2013/06/22 04:42
名前: lightbox
枠線は機能として必要ありませんが、そこにコンテンツがある事を明示できます。







<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape=["rectangle" | "oval" | "line" | "ring"] >
    <corners
        android:radius="integer"
        android:topLeftRadius="integer"
        android:topRightRadius="integer"
        android:bottomLeftRadius="integer"
        android:bottomRightRadius="integer" />
    <gradient
        android:angle="integer"
        android:centerX="integer"
        android:centerY="integer"
        android:centerColor="integer"
        android:endColor="color"
        android:gradientRadius="integer"
        android:startColor="color"
        android:type=["linear" | "radial" | "sweep"]
        android:useLevel=["true" | "false"] />
    <padding
        android:left="integer"
        android:top="integer"
        android:right="integer"
        android:bottom="integer" />
    <size
        android:width="integer"
        android:height="integer" />
    <solid
        android:color="color" />
    <stroke
        android:width="integer"
        android:color="color"
        android:dashWidth="integer"
        android:dashGap="integer" />
</shape>
Android ドキュメント
このアーティクルの参照用URLをクリップボードにコピー メンテナンス
ボタンを追加して、イベント作成 ( No.2 )
日時: 2013/06/22 04:38
名前: lightbox


同じ型のメソッドを選択して書き換え


手作業で書いてもしれているのですが、使ったほうが簡単です。




このアーティクルの参照用URLをクリップボードにコピー メンテナンス
AlertDialog による確認処理 ( No.3 )
日時: 2013/06/22 04:43
名前: lightbox


▼ ここは、別に手作業で十分なんですが、少しでも Eclipse を利用するサンプルです。





▼ .show を付加しないと表示されません。





No の場合の処理は、protected void onNoClick(DialogInterface dialog, int which) を Override すればいいので、ブロックの中で『メソッドをオーバーライド/実装』で選択してコードを作成します( 処理が無いのなら必要ありません )
このアーティクルの参照用URLをクリップボードにコピー メンテナンス
通信処理 ( No.4 )
日時: 2013/06/22 04:44
名前: lightbox
10.0.2.2 は、ローカルの PC のアドレス


HttpPostAndXml の仕様として、実行時に引き渡すのは Map であり、url キーは固定で呼び出し先です。
url キー以外のキーは全て POST する名前(name)になり、UrlEncode は内部で行われます。( utf8 固定 )









▼ 複数の item の中を全て処理する場合
new HttpPostAndXml(){

	@Override
	protected void onPostExecute(Document result) {

		if ( result == null ) {
			return;
		}
				
		// ルート要素
		Element root = result.getDocumentElement();
		NodeList node_list = root.getElementsByTagName("item");
		for( int i = 0; i < node_list.getLength(); i++ ) {
					
			NodeList nl = ((Element)node_list.item(i)).getElementsByTagName("title");
			Log.i("MyList", nl.item(0).getFirstChild().getNodeValue());		
		}
				
	}
			
}.execute(map);
AndroidManifest にインターネットアクセスの許可を設定します
このアーティクルの参照用URLをクリップボードにコピー メンテナンス
MessageBox.java ( No.5 )
日時: 2013/06/22 03:55
名前: lightbox
package com.example.basic;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.util.Log;
import android.widget.Toast;

// *********************************************************
// AlertDialog で応答する
// *********************************************************
public abstract class MessageBox {

	public AlertDialog alertDialog = null;
	
	public MessageBox(Activity context,String title,String Message) {

		init(context,title,Message);

	}
	
	private void init(Activity context,String title,String Message) {

		AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);
		alertDialogBuilder.setTitle(title);
		alertDialogBuilder.setMessage(Message);
		
		alertDialogBuilder.setPositiveButton("YES",
			new DialogInterface.OnClickListener() {
				@Override
				public void onClick(DialogInterface dialog, int which) {
					MessageBox.this.onYesClick(dialog, which);
				}
			});
		alertDialogBuilder.setNegativeButton("NO",
				new DialogInterface.OnClickListener() {
					@Override
					public void onClick(DialogInterface dialog, int which) {
						MessageBox.this.onNoClick(dialog, which);
					}
				});
		
		alertDialogBuilder.setCancelable(true);
		// アラートダイアログを作成します
		alertDialog = alertDialogBuilder.create();
		
	}
	
	public MessageBox(Activity context,String Message) {

		init2(context,Message);

	}
	
	private void init2(Activity context,String Message) {

		AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);
		alertDialogBuilder.setTitle("確認");
		alertDialogBuilder.setMessage(Message);
		
		alertDialogBuilder.setPositiveButton("OK",
			new DialogInterface.OnClickListener() {
				@Override
				public void onClick(DialogInterface dialog, int which) {
					MessageBox.this.onYesClick(dialog, which);
				}
			});
		
		alertDialogBuilder.setCancelable(true);
		// アラートダイアログを作成します
		alertDialog = alertDialogBuilder.create();
		
	}

	abstract void onYesClick(DialogInterface dialog, int which);
	protected void onNoClick(DialogInterface dialog, int which) {
	}

	public void show(){
		
		alertDialog.show();
		
	}

}
このアーティクルの参照用URLをクリップボードにコピー メンテナンス
HttpPostAndXml.java ( No.6 )
日時: 2013/06/22 03:56
名前: lightbox
package com.example.httppost;

import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.Iterator;
import java.util.Map;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;

import android.os.AsyncTask;
import android.util.Log;

// *********************************************************
// POST して XML を取得する
// *********************************************************
public class HttpPostAndXml extends AsyncTask<Map, Void, Document> {

	@Override
	protected Document doInBackground(Map... params) {
		
		Document xml_data = null;
		
		Map<String,String> myArg = params[0];

		try {
			// ターゲット
			URL url = new URL(myArg.get("url"));
			// 接続オブジェクト
			HttpURLConnection http = (HttpURLConnection)url.openConnection();
			http.setConnectTimeout(30000);
			http.setReadTimeout(30000);
			http.setDoInput(true);	// application/x-www-form-urlencoded がセットされる
			http.setRequestMethod("POST");
			
			OutputStreamWriter osw = new OutputStreamWriter(http.getOutputStream());
			BufferedWriter bw = new BufferedWriter(osw);
			
			Iterator<String> it =  myArg.keySet().iterator();
			String key = null;
			String value = null;
			String data = "";
			while(it.hasNext()) {
				key = it.next().toString();
				if ( key.equals("url") ) {
					continue;
				}
				value = myArg.get(key);
				if ( !data.equals("") ) {
					data += "&";
				}
				data += key + "=" + URLEncoder.encode(value, "utf-8") ;
			}
			
			Log.i("",data);
				
			bw.write( data );

			bw.close();
			osw.close();
			
			DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance();
			DocumentBuilder builder = dbfactory.newDocumentBuilder();
			// InputStream から Documentオブジェクトを取得
			xml_data = builder.parse(http.getInputStream());
			// 接続解除
			http.disconnect();
		}
		catch(Exception e) {
			Log.i("HttpPostAndXml", e.getMessage());
		}
		return xml_data;
	}
	

}
このアーティクルの参照用URLをクリップボードにコピー メンテナンス