我发现如何在Android应用程序中发出HTTP请求,所以我尝试做的第一件事就是测试给定的URL是否存在。我只是想让它显示"网页存在"如果它存在且"网页不存在"如果它不存在。但没有任何表现。我的代码中一定有错误,但我无法找到它。所以这是代码:
package com.nounoursheureux.excalicubeforum;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends ActionBarActivity {
private HttpURLConnection connection;
private TextView text;
private URL url;
private Boolean result;
private HttpTask httpTask;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text = new TextView(this);
httpTask = new HttpTask();
httpTask.execute();
}
final class HttpTask extends AsyncTask<Void, Integer, Boolean> {
private HttpURLConnection connection;
private URL url;
protected void onPreExecute() {
try {
url = new URL("http://www.excalicube.net/");
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
connection = (HttpURLConnection)url.openConnection();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
protected Boolean doInBackground(Void... params) {
try {
if (connection.getResponseCode() == HttpURLConnection.HTTP_OK ) {
text.setText("La page existe");
return true;
}
else if (connection.getResponseCode() == HttpURLConnection.HTTP_NOT_FOUND ) {
text.setText("La page n'existe pas");
return false;
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}
}
XML布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
所以我希望TextView显示答案,但它保持空白
谢谢
答案 0 :(得分:0)
我想您需要制作一个HTTP request
才能知道网址是否存在。从你的代码我会说你只是打开套接字,如果IP地址存在,这将永远发生。我建议发一个POST / GET请求并查看结果代码。
这是一个例子:
HttpGet req = new HttpGet(yourURL);
HttpClient client = new DefaultHttpClient();
HttpResponse response = client.execute(req);
int resultCode = response.getStatusLine().getStatusCode();
答案 1 :(得分:0)
评论此行
text.setText("La page existe");
text.setText("La page n'existe pas");
您无法在doInBackground方法内与UI进行交互。您应该在onPostExecute方法中执行所有与UI相关的工作。
如果这解决了您的问题,请接受答案。
...干杯!