Androidネットワーク接続処理

6736 ワード

抜粋:http://www.cnblogs.com/feisky/archive/2010/01/13/1646919.html>>http://www.cnblogs.com/feisky/archive/2010/01/13/1646919.html
 
Androidでは、ネットワークプログラミングを実現するための様々な方法があり得る。
  • URLを作成し、URLConnection/HttpURLConnection
  • を使用します。
  • HttpClient
  • を使用します。
  • Web View
  • を使用します。
    URLを作成し、URLConnection/HttpURLConnectionを使用します。
    java.net.*以下はHTTPサービスにアクセスする基本機能を提供します。この部分のインターフェースを使う基本的な操作は主に以下の通りである。
  • は、URL及びURLConnection/HttpURLConnectionオブジェクト
  • を作成する。
  • 接続パラメータを設定する
  • はサーバ
  • に接続されています。
  • は、サーバにデータを書き込む
  • サーバからデータを読み出す
  • ソース:
                        try {//   URL  URL url = new URL("http://t.sina.cn/fesky");//   URL  URLConnection connection = url.openConnection();//    HTTP           HttpURLConnection,//           HTTP        ,  setRequestMethod()  // HttpURLConnection connection// =(HttpURLConnection)url.openConnection(Proxy_yours);//     connection.setConnectTimeout(10000);connection.addRequestProperty("User-Agent", "J2me/MIDP2.0");//      connection.connect();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}
    Http Clientを使う
    HttpClient類に対しては、HttpPostとHttpGet類とHttpResonseを使用してネットワーク接続ができます。
    image
    WebViewを使う
    Android携帯には高性能webkitカーネルブラウザが内蔵されており、SDKにはWebViewのコンポーネントが実装されている。
    http://developer.android.com/guide/tutorials/views/hello-webview.htmlは、簡単な例を提供する。
    1.webviewのXML定義:
    <WebView          android:id="@+id/webview"         android:layout_width="fill_parent"         android:layout_height="fill_parent"     /> 
    2.Manifestファイルにおけるパーミッションの設定:
        3.JavaScriptをサポートしたい場合:
        webview.get Settings()set JavaScript Enbaled(true) 
    4.ウェブビューにウェブページを表示する必要があれば、内蔵ブラウザでブラウズするのではなく、mWebView.set WebView Clientを必要とし、ShoruldOverrideUrlLoading方法を書き換える。
    5.何も処理しないなら、Browser UIを表示する時、システム「Back」ボタンをクリックして、Browser全体を一つの「Back」として、他のActivityに行って、Browserの歴史ページでBackを希望しないでください。歴史ページでBackを実現するには、現在のActivityでBackイベントを処理する必要があります。
             WebView webview;/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);//   WebView  webview = (WebView) findViewById(R.id.webview); //   JavaScriptwebview.getSettings().setJavaScriptEnabled(true); //      WebView     ,            ,//    mWebView.setWebViewClient,   // shouldOverrideUrlLoading  。webview.setWebViewClient(new WebViewClientDemo());//     webview.loadUrl("http://t.sina.cn/fesky")@@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {//   BACK        if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) {         webview.goBack();         return true;     } return super.onKeyDown(keyCode, event);}private class WebViewClientDemo extends WebViewClient {     @Override     //  WebView                  public boolean shouldOverrideUrlLoading(WebView view, String url) {         view.loadUrl(url);         return true;     } }
    image
    以上はloadUrl方式を採用してウェブページのローディングを実現するものであり、loadDataまたはloadData WithBaseURL方法を採用してウェブページのローディングを実現することもできる。
       webview.loadData()、「text/html」、「utf-8」);
       もしhtmlに中国語が含まれているなら、webview.loadData(URLEncoder.encode()、encoding)、mimeType、encoding)が必要です。
       ローカル画像またはウェブページの表示には、loadUrlが使用されてもよいが、Urlのアドレスプレフィックスは、file:/などである。file:///android_asset/test.htm」をクリックします。