Java Android简单HTTP请求?

Java Android简单HTTP请求?,java,android,apache,http,request,Java,Android,Apache,Http,Request,我有一个Android应用程序的代码,我正试图创建一个与PHP网站交互的应用程序。我激活了android.permission.INTERNET权限,并且它不断创建一个显示错误的祝酒词。而不是网站的内容。这是我唯一的java文件: package com.http.request; import java.io.IOException; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import

我有一个Android应用程序的代码,我正试图创建一个与PHP网站交互的应用程序。我激活了android.permission.INTERNET权限,并且它不断创建一个显示错误的祝酒词。而不是网站的内容。这是我唯一的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();
    }
}

我会检查以确保

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

我会检查以确保

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

这是Toast显示的您自己的错误字符串。更好的改变

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


在尝试连接主线程时引发异常,这是不允许的。将doHTTPRequest放在线程或异步任务中。

这是Toast显示的您自己的错误字符串。更好的改变

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


在尝试连接主线程时引发异常,这是不允许的。将doHTTPRequest放在线程或异步任务中。

stacktrace说什么,LogCat?错误是什么?添加更多信息,使其比猜测咖啡豆更容易理解

我的猜测是:这是因为您试图在UI线程中执行网络操作,这在3.0+版本中是不允许的。
你的stacktrace怎么说,LogCat?错误是什么?添加更多信息,使其比猜测咖啡豆更容易理解

我的猜测是:这是因为您试图在UI线程中执行网络操作,这在3.0+版本中是不允许的。

模拟器或设备是否已连接到internet?检查并查看是否可以在该设备上浏览yahoo.com。模拟器或设备是否已连接到internet?检查并查看您是否可以在该设备上浏览yahoo.com。您的应用程序运行的是哪个Android版本?您的应用程序运行的是哪个Android版本?