0

最も簡単な方法で Web ページを接続しようとしています。AsyncTask を使用する必要があることを知りましたが、この仕事を前に見たいです。

package com.example.duzbaglanti;

import java.io.BufferedInputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import android.os.Bundle;
import android.os.StrictMode;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {



    String biyazi = "ggg";
    TextView tv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);

        tv = (TextView) findViewById(R.id.textView1);
        Button benimtus = (Button) findViewById(R.id.button1);

        benimtus.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                tv.setText(biyazi);
            }
        });



        HttpURLConnection benimconnection = null;
        try {
            URL benimurl = new URL("anypage");
            benimconnection = (HttpURLConnection) benimurl.openConnection();
            int sonuckodu = benimconnection.getResponseCode();
            if(sonuckodu == HttpURLConnection.HTTP_OK) {
                InputStream benimin = new BufferedInputStream(benimconnection.getInputStream());
                biyazi = benimin.toString();

                ///////
            }
        }
        catch (Exception e) {
            Log.d("baglantihatasi","hata oldu",e);
        }
        finally { benimconnection.disconnect(); }




    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

ボタンをクリックすると、文字列が Web ページの出力ではなく「Java.io.BufferedInputStream@4177b2a8」に変わります。何が間違っていますか?

4

2 に答える 2

0

の実装を見たことがありBufferedInputStream#toString()ますか?

InputStream benimin = new BufferedInputStream(benimconnection.getInputStream());
biyazi = benimin.toString();

実際にはありません。したがって、メソッド呼び出しObject#toString()は、それが実装された最初の利用可能な親クラス メソッドであるため、延期されます。それはそのように実装されています

public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

つまり、の内容とは何の関係もありませんInputStream。実際にストリームをバイト配列に読み込んでから、それを に変換する必要がありますStringこれが1つの方法です。

于 2013-09-14T06:48:13.363 に答える