0

コードは少し長いですが、それらのほとんどは非常に単純な IMO です。http://forum.xda-developers.com/login.php現在、データをWebサイトに投稿し、返されたHTMLコードをTextViewに表示するAndroidアプリを作成しています.最初に、単純なJava POSTメソッドを作成しました. HTML は正常に表示されますが、ユーザー名とパスワードが間違っていることがわかります):

package com.app.main;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.URLConnection;

public class Connection
{
    String returnText = "";                        
    String returnLine;

            //data which is about to be posted
    public String data = "vb_login_username=test&vb_login_password&securitytoken=guest&do=login";

    public String returnHTML()
    {
    try {
            URL url = new URL("http://forum.xda-developers.com/login.php");
            URLConnection conn = url.openConnection();
            conn.setDoOutput(true);
            OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
            wr.write(data);
            wr.flush();
            BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));

            while((returnLine = rd.readLine()) != null) {
                returnText += returnLine;
            }

            wr.close();
            rd.close();

            return returnText;

    } catch (Exception e) {
         return "ERROR: "+e.getMessage();
      }
    }
}

私は以下を使用してコードをテストしました:

Connection net_start = new Connection();
System.out.println(net_start.returnHTML());

完全。HTML が正常に返されたので、Android アプリを作成します。これは非常にシンプルで、ボタンと TextView しかありません。ボタンを押すと、TextView は返された HTML を正常に表示します。メインの Activity.java のソース コードは次のとおりです。

package com.app.main;

import android.app.Activity;
import android.os.Bundle;
import android.text.method.ScrollingMovementMethod;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class AndroidTestActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    final TextView displayResult = (TextView)findViewById(R.id.displayResult);
    Button login = (Button)findViewById(R.id.login);

    //set dispalyResult scrollable
    displayResult.setMovementMethod(new ScrollingMovementMethod());

    login.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {

            Connection net_start = new Connection();
            displayResult.setText(net_start.returnHTML());      

        }

    });

    }

}

非常に単純なコードですが、上記との唯一の違いは、返された HTML 表示をコマンド ラインではなく TextView に設定したことです。しかし、私は失敗しました。デバッグによると、アプリが Connection.java: のその行で例外をスローすることがわかりました。OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());キャッチされた e は : と言いましたjava.net.UnknownHostException: forum.xda-developers.comが、実際には携帯電話で xda-developers Web サイトにログインできます (携帯電話でアプリをデバッグしadbます)。 、それはどうしたのですか?アンドロイドは使えませんURLConnectionか?どんな助けでも大歓迎です:)

4

1 に答える 1

2

利用可能ですか?

 <uses-permission 
        android:name="android.permission.INTERNET" />

Android アプリケーションのマニフェストファイルに..

私の場合、あなたのコードは正常に動作します:

の結果returnTextは次のとおりです。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en"><head><meta name="robots" content="noindex,follow" /><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /><meta http-equiv="X-UA-Compatible" content="IE=9" ><meta name="keywords" content="XDA,MDA,Vario,HTC,Qtek,wallaby,wizard,tytn,hermes,alpine,prophet,i-mate,jam,dopod,tornado,typhoon,programming,coding,modding,wiki,forum,news,xdatools,xdaunlock,romkitchen,rom,development,lobster,unlock,imei" /><meta name="description" content="Android and Windows Mobile Developers - The Largest Community for Smartphone Hacks and Development of Apps" /><style type="text/css" id="vbulletin_css">/*** vBulletin 3.8.7 CSS* Style: 'XDA 2010'; Style ID: 16*/@import url("http://media.xda-developers.com/clientscript/vbulletin_css/style-e9bec9ef-00016.css");
于 2012-04-07T05:13:49.903 に答える