我有一个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();
}
}
答案 0 :(得分: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