为什么不是';t android连接到我的web服务器 package com.mohd.tryapp; 导入android.os.AsyncTask; 导入android.os.Bundle; 导入android.support.v7.app.ActionBarActivity; 导入android.widget.TextView; 导入java.net.URL; 导入java.net.URLConnection; 公共类MainActivity扩展了ActionBarActivity{ 公共静态int标志; 文本视图; @凌驾 创建时受保护的void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.layout); 视图=(TextView)findViewById(R.id.textvi); getFlag var=new getFlag(); 变量execute(); 如果(标志==1) view.setText(“true”); 其他的 view.setText(“false”); } 类getFlag扩展了异步任务{ 私人例外; @凌驾 受保护的Void doInBackground(Void…参数){ 试一试{ 字符串url=”http://mohdgadi.netai.net/Register.php"; int超时=15*1000; URL myUrl=新URL(URL); URLConnection=myUrl.openConnection(); connection.setConnectTimeout(超时); connection.connect(); flag=1; }捕获(例外e){ e、 printStackTrace(); flag=0; } 返回null; } } }
这是我主要活动的代码,我想连接到我的000webhost网站,但连接总是显示为false。我甚至尝试将url更改为,但似乎不起作用。问题可能在于,结果总是显示为false,这是因为,如果您看到日志,您将注意到,您的代码将抛出一个。这意味着Android不允许您在主线程上进行网络调用。因此,将您的代码移动到一个应用程序中 你可以看到一个例子 您应该使用为什么不是';t android连接到我的web服务器 package com.mohd.tryapp; 导入android.os.AsyncTask; 导入android.os.Bundle; 导入android.support.v7.app.ActionBarActivity; 导入android.widget.TextView; 导入java.net.URL; 导入java.net.URLConnection; 公共类MainActivity扩展了ActionBarActivity{ 公共静态int标志; 文本视图; @凌驾 创建时受保护的void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.layout); 视图=(TextView)findViewById(R.id.textvi); getFlag var=new getFlag(); 变量execute(); 如果(标志==1) view.setText(“true”); 其他的 view.setText(“false”); } 类getFlag扩展了异步任务{ 私人例外; @凌驾 受保护的Void doInBackground(Void…参数){ 试一试{ 字符串url=”http://mohdgadi.netai.net/Register.php"; int超时=15*1000; URL myUrl=新URL(URL); URLConnection=myUrl.openConnection(); connection.setConnectTimeout(超时); connection.connect(); flag=1; }捕获(例外e){ e、 printStackTrace(); flag=0; } 返回null; } } },android,http,url,Android,Http,Url,这是我主要活动的代码,我想连接到我的000webhost网站,但连接总是显示为false。我甚至尝试将url更改为,但似乎不起作用。问题可能在于,结果总是显示为false,这是因为,如果您看到日志,您将注意到,您的代码将抛出一个。这意味着Android不允许您在主线程上进行网络调用。因此,将您的代码移动到一个应用程序中 你可以看到一个例子 您应该使用get()等待填充结果,但最好在doInBackground返回后使用onPostExecute执行代码 package com.mohd.t
get()
等待填充结果,但最好在doInBackground
返回后使用onPostExecute
执行代码
package com.mohd.tryapp;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.widget.TextView;
import java.net.URL;
import java.net.URLConnection;
public class MainActivity extends ActionBarActivity {
public static int flag;
TextView view;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout);
view=(TextView)findViewById(R.id.textvi);
getFlag var=new getFlag();
var.execute();
if(flag==1)
view.setText("true");
else
view.setText("false");
}
class getFlag extends AsyncTask<Void, Void, Void> {
private Exception exception;
@Override
protected Void doInBackground(Void... params) {
try{
String url="http://mohdgadi.netai.net/Register.php";
int timeout=15*1000;
URL myUrl = new URL(url);
URLConnection connection = myUrl.openConnection();
connection.setConnectTimeout(timeout);
connection.connect();
flag=1;
} catch (Exception e) {
e.printStackTrace();
flag=0;
}
return null;
}
}
}
好的,我对我的代码做了更改,正如你说的,看看我编辑的代码,但它仍然给我错误的信息,这是因为你在设置标志之前访问了这个值。我已经编辑了我的答案,看到了吗?仍然是假的为什么我不能连接:(你在清单文件中包含了
互联网
权限吗?是的,我已经包含了,我需要帮忙你能写一个简单的代码来连接到google.com吗
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout);
view=(TextView)findViewById(R.id.textvi);
getFlag var=new getFlag();
var.execute();
var.get();
if(flag==1)
view.setText("true");
else
view.setText("false");
}