Android¤ÇHTTP¤ò»ÈÍѤ·¤Æ¥Í¥Ã¥È¥ï¡¼¥¯¤Ë¥¢¥¯¥»¥¹¤¹¤ë¤Ë¤Ï¡¢org.apache.http.client¥Ñ¥Ã¥±¡¼¥¸¤Î¥¯¥é¥¹¤ò»ÈÍѤ·¤Þ¤¹¡£
¤¿¤À¤·¡¢»È¤¤¤³¤Ê¤¹¤¿¤á¤Ë¤ÏHTTP¥×¥í¥È¥³¥ë¤ò¿¾¯Íý²ò¤·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ê¡¢Æȼ«¤Ë¥Ø¥Ã¥À¡¼¤òÀßÄꤹ¤ë¤Ê¤É¡¢Æüì¤Ê»È¤¤Êý¤ò¤¹¤ë¤Î¤Ç¤Ê¤±¤ì¤Ðorg.apache.http.client¤òľÀÜÁàºî¤¹¤ëɬÍפϤ¢¤Þ¤ê¤¢¤ê¤Þ¤»¤ó¡£
¤³¤³¤Ç¤ÏandroidÍѤΥ桼¥Æ¥£¥ê¥Æ¥£¤È¤·¤Æ¥ª¡¼¥×¥ó¥½¡¼¥¹¤Ç¸ø³«¤µ¤ì¤Æ¤¤¤ëRestfulClient¥¯¥é¥¹¤ò»ÈÍѤ·¡¢HTTP¤ÎGET¥á¥½¥Ã¥É¤ò»È¤Ã¤Ægoogle¤Ë¸¡º÷¥¯¥¨¥ê¤òÅꤲ¤Æ·ë²Ì¤òHTML¤Ç¼õ¤±¼è¤Ã¤Æ¤ß¤¿¸å¡¢RestfulClient¥¯¥é¥¹Æâ¤ÎÆ°ºî¤òÄɤäƤߤޤ·¤ç¤¦¡£
google¤Ë¸¡º÷¥¯¥¨¥ê¤òȯ¹Ô¤¹¤ë¤¿¤á¤Î¥×¥í¥¸¥§¥¯¥È¤òºîÀ®¤·¤Þ¤¹¡£
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="net.it4myself.hellohtml" android:versionCode="1" android:versionName="1.0.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".HelloHTML" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-permission android:name="android.permission.INTERNET"/> </manifest>
²èÌ̤Υ쥤¥¢¥¦¥È¤ò·èÄꤹ¤ë¤¿¤á¤Ë¡¢res/layout/main.xml¤òÊÔ½¸¤·¤Þ¤·¤ç¤¦¡£
<?xml version="1.0" encoding="utf-8"?> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android" > <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="Query String" > </TextView> <EditText android:id="@+id/query_text" android:layout_width="200px" android:layout_height="wrap_content" android:text="EditText" android:textSize="18sp" > </EditText> <Button android:id="@+id/search_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="search" > </Button> </LinearLayout> <TextView android:id="@+id/html_source" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="TextView" > </TextView> </LinearLayout>
ÊÌ¤Î¥×¥í¥¸¥§¥¯¥ÈÆâ¤Ë¤¢¤ë¥Ñ¥Ã¥±¡¼¥¸¤ò»ÈÍѤ¹¤ë¤Î¤Ç¡¢¥Ó¥ë¥É¥Ñ¥¹¤ÎÀßÄê¤ò¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤³¤ì¤ò˺¤ì¤Æ¤·¤Þ¤¦¤È¡¢net.it4myself.util.RestfulClient¥¯¥é¥¹¤Ï»ÈÍѤǤ¤Þ¤»¤ó¡£
package net.it4myself.hellohtml; import java.io.IOException; import org.apache.http.client.ClientProtocolException; import net.it4myself.util.RestfulClient; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class HelloHTML extends Activity { /** Called when the activity is first created. */ public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button b = (Button)findViewById(R.id.search_button); b.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { EditText input = (EditText)findViewById(R.id.query_text); TextView html_source = (TextView)findViewById(R.id.html_source); String queryString = "http://www.google.com/search?q=" + input.getText().toString(); try { String html = RestfulClient.Get(queryString, null); html_source.setText(html); } catch (ClientProtocolException e) { e.printStackTrace(); html_source.setText("error1"); } catch (IOException e) { e.printStackTrace(); html_source.setText("error2"); } } }); } }
shared_android_utils¥×¥í¥¸¥§¥¯¥È¤ò³«¤¡¢src¤Î²¼¤Înet.it4myself.util¤ÎRestfulClient.java¤ò³«¤¤¤ÆÆâÍƤò³Îǧ¤·¤Þ¤¹¡£ RestfulClient¥¯¥é¥¹¤Î¾ì¹ç¡¢ÊÖÃͤ¬String¤«DOM¥ª¥Ö¥¸¥§¥¯¥È¤«¤Ë¤è¤Ã¤Æ¥ª¡¼¥Ñ¥í¡¼¥É¤µ¤»¤Æ¤¤¤Þ¤¹¤¬¡¢´ðËÜŪ¤Êή¤ì¤ÏƱ¤¸¤Ç¤¹¡£¤³¤³¤Ç¤Ï´ðËÜŪ¤Êή¤ì¤ò²òÀ⤷¤Þ¤¹¡£
public static String Get(String uri, HashMap<String,String> map) throws ClientProtocolException, IOException { String fulluri; if(null == map){ fulluri = uri; } else { fulluri = uri + packQueryString(map); } HttpGet method = new HttpGet(fulluri); return EntityUtils.toString(DoRequest(method)); } private static HttpEntity DoRequest(HttpUriRequest method) throws ClientProtocolException, IOException { HttpClient client = new DefaultHttpClient(); // (A) HttpResponse response = null; try { response = client.execute(method); // (B) int statuscode = response.getStatusLine().getStatusCode(); // °Ê²¼(C) //¥ê¥¯¥¨¥¹¥È¤¬À®¸ù 200 OK and 201 CREATED if (statuscode == HttpStatus.SC_OK | statuscode == HttpStatus.SC_CREATED){ return response.getEntity(); } else { throw new HttpResponseException(statuscode, "Response code is " + Integer.toString(statuscode)); } }catch (RuntimeException e) { method.abort(); Log.v(TAG, e.getMessage()); throw new RuntimeException(e); } }