今更始めるAndorid
と言う事で、今更感があるがAndroid開発を始めようと思う。
とりあえずTwitterClient作ってみようと思って、いろいろネットで調べてOAuthとかXAuth・JSONと流し読みしてみたが、いかんせんAndroidSDK全然知らないので、まったくわからん。。。
なのできちんと最初から書くように。
Javaも相当久しぶりなのでヤバイ。。。
で、とにかくまずは通信しなきゃ話にならないので他の多くの人がやっているようにHttpClientから。
■HttpClient.java
package com.MyTwitter;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpHost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.HttpResponseException;
import android.util.Log;
public class HttpClient
{
private String url;
public HttpClient (String _url)
{
this.url = _url;
}
public String request ()
{
String ret = null;
try
{
Log.d ("MyTwitter", "Start HttpClient::request url = " + url);
DefaultHttpClient http = new DefaultHttpClient ();
/*
HttpHost proxy = new HttpHost ("xxx.xxx.xxx.xxx", xxxx);
http.getParams ().setParameter (ConnRoutePNames.DEFAULT_PROXY, proxy);
*/
HttpGet g = new HttpGet (url);
HttpResponse res = http.execute (g);
// httpレスポンスの400番台以降はエラーだから例外をthrow
if (res.getStatusLine ().getStatusCode () >= 400 )
{
Log.d ("MyTwitter", "HttpClient::request faild !! -> " + String.valueOf (res.getStatusLine ().getStatusCode ()));
Log.d ("MyTwitter", res.getStatusLine ().getReasonPhrase ());
//throw new HttpResponseException (res.getStatusLine ().getStatusCode (), res.getStatusLine ().getReasonPhrase ());
}
// httpレスポンスの400番台以降はエラーだから
HttpEntity entity = res.getEntity ();
// レスポンス本体を取得
InputStream inputstream = entity.getContent ();
InputStreamReader inputstreamreader = new InputStreamReader (inputstream);
BufferedReader bufferedreader = new BufferedReader (inputstreamreader);
StringBuilder stringbuilder = new StringBuilder ();
String sline;
while *1 != null)
{
stringbuilder.append (sline + "\r\n");
}
ret = stringbuilder.toString ();
Log.d ("MyTwitter", "HttpClient::request ret = " + ret);
Log.d ("MyTwitter", "HttpClient::request Success !!");
}
catch (Exception e)
{
Log.d ("MyTwitter", "HttpClient::Exception = " + e.getMessage ());
}
return ret;
}
}
これをextends ActivityしているClassから呼んでみると、ちゃんとxml取れているようだ。
DEBUG/MyTwitter(301): Main xml =
DEBUG/MyTwitter(301):
DEBUG/MyTwitter(301):
DEBUG/MyTwitter(301):
DEBUG/MyTwitter(301):
DEBUG/MyTwitter(301):
DEBUG/MyTwitter(301):
DEBUG/MyTwitter(301):
DEBUG/MyTwitter(301):
ソース的にはAndroid全然関係ないけど、まずはココから