コメント |
@DIV
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;
}
}
@END |