无法使用Android应用

时间:2015-06-30 14:05:41

标签: android

我在php中有一个托管网站。 Android应用程序尝试打开网页happy.php。当我尝试运行此应用程序时,显示失败,而不是在textview中显示yayyyy。请帮我找错误

public class MainActivity extends ActionBarActivity {
    Button b;
    TextView t;
    String n;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        b=(Button)findViewById(R.id.button);
        t=(TextView)findViewById(R.id.textView);
        b.setOnClickListener( new View.OnClickListener(){
            public void onClick(View v)
            {try {
                DefaultHttpClient d = new DefaultHttpClient();
                HttpPost p = new HttpPost("http://www.palakarora.net16.net/happy.php");
                HttpResponse httpResponse = d.execute(p);
                HttpEntity httpEntity = httpResponse.getEntity();
                InputStream is = httpEntity.getContent();
                BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
                n = reader.readLine();
            }
            catch(Exception e)
            {
                n="failed";
            }
                t.setText(n);



            }
        });
    }


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

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

happy.php是android app调用的网页。该页面打印“yayyyy”。 happy.php

<?
print("yayyyyy");
?>

3 个答案:

答案 0 :(得分:2)

所有android异步任务(包括连接)应该在一个单独的线程中进行,并且在所有现代版本中,你被迫在一个单独的线程中建立连接(使用AsyncTask或类似的东西),坏的是,发生这种情况时,未明确显示连接问题,因此请确保在发送请求时执行此操作。希望这有帮助

答案 1 :(得分:0)

确实,主线程上的网络是不允许的。

也许使用Retrofit库来处理下载。

没有asynctasks,生活会更好

http://square.github.io/retrofit/

答案 2 :(得分:0)

你在本地或服务器上工作是无动于衷的,'httpPost'类需要在AsynClass中工作,因为'httpPost'是异步方法... 我解释了一点here并有3个例子!!

告诉我,如果我帮助你并做好编程!