Android简单HTTP请求?

时间:2012-03-08 01:20:10

标签: java android apache http request

我有一个Android应用程序的代码,我正在尝试创建与我的PHP网站进行交互。我已激活 android.permission.INTERNET 权限,并且它会一直创建一个显示“错误”的Toast。而不是网站的内容。这是我唯一的java文件:

package com.http.request;

import java.io.IOException;

import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;

import android.app.Activity;
import android.os.Bundle;
import android.widget.Toast;

public class HttprequestActivity extends Activity {
    /** Called when the activity is first created. */

    private String doHTTPRequest(String url){
        String results = "ERROR";
        try
        {
            HttpClient hc = new DefaultHttpClient();
            HttpPost post = new HttpPost(url);

            HttpResponse rp = hc.execute(post);

            if(rp.getStatusLine().getStatusCode() == HttpStatus.SC_OK)
            {
                results = EntityUtils.toString(rp.getEntity());
            }
        }catch(IOException e){
            e.printStackTrace();
        }
        return results;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        String results = doHTTPRequest("http://www.yahoo.com");
        Toast.makeText(getApplicationContext(), results, Toast.LENGTH_LONG).show();
    }
}

3 个答案:

答案 0 :(得分:3)

我会检查以确保,

  1. 如果抛出异常,请调查导致IOException的原因
  2. 您的服务器可能会返回非200响应代码。
  3. 加入一些断点,看看那里发生了什么。我的赌注是答案代码。

答案 1 :(得分:1)

这是Toast()显示的您自己的“ERROR”字符串。更好的改变

catch(IOException e){
        e.printStackTrace();
    }

catch(IOException e){
        result = "ERROR IOException";
        e.printStackTrace();
    }

当您尝试在主线程中连接时,抛出异常,这是不允许的。将doHTTPRequest()放入帖子或AsyncTask

答案 2 :(得分:0)

你的堆栈跟踪说什么,LogCat?错误是什么?添加更多信息,比“猜测咖啡豆”更清楚地理解

我的猜测是:发生这种情况是因为您尝试在UI线程中进行网络操作,这在3.0+版本中是不允许的。 http://developer.android.com/reference/android/os/NetworkOnMainThreadException.html