无法使用 android studio 连接到“xampp server localhost”
Posted
技术标签:
【中文标题】无法使用 android studio 连接到“xampp server localhost”【英文标题】:Can not connect to "xampp server localhost" with android studio 【发布时间】:2019-02-01 02:39:57 【问题描述】:我尝试使用 AsyncTask 类通过 android studio 连接到我的 localhost xampp。这是 AsyncTask 但它给出了错误提示 Failed to connect
to /10.0.2.2:800
我尝试了我的真实 IP 地址 cmd --> ipconfig IPV4 和其他一些技巧,但是 他们没有成功
下面是我的应用结构
AsyncTask 使用类
package app.buil.land.food.doymaj.doymaj;
import android.app.AlertDialog;
import android.content.Context;
import android.os.AsyncTask;
import android.util.Log;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
/**
* Created by ProgrammingKnowledge on 1/5/2016.
*/
public class backGroundActivities extends AsyncTask<String,Void,String>
Context context;
AlertDialog alertDialog;
backGroundActivities (Context ctx)
context = ctx;
@Override
protected String doInBackground(String... params)
String type = params[0];
String login_url = "http://10.0.2.2:800/login.php";
if(type.equals("login"))
try
String phone_number = params[1];
// String password = params[2];
URL url = new URL(login_url);
HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection();
httpURLConnection.setRequestMethod("POST");
httpURLConnection.setDoOutput(true);
httpURLConnection.setDoInput(true);
OutputStream outputStream = httpURLConnection.getOutputStream();
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream, "UTF-8"));
String post_data = URLEncoder.encode("phone_number","UTF-8")+"="+URLEncoder.encode(phone_number,"UTF-8");
bufferedWriter.write(post_data);
bufferedWriter.flush();
bufferedWriter.close();
outputStream.close();
InputStream inputStream = httpURLConnection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream,"iso-8859-1"));
String result="";
String line="";
while((line = bufferedReader.readLine())!= null)
result += line;
Log.e("Line_from_php_server",result);
bufferedReader.close();
inputStream.close();
httpURLConnection.disconnect();
return result;
catch (MalformedURLException e)
e.printStackTrace();
catch (IOException e)
e.printStackTrace();
return null;
@Override
protected void onPreExecute()
alertDialog = new AlertDialog.Builder(context).create();
alertDialog.setTitle("Login Status");
@Override
protected void onPostExecute(String result)
alertDialog.setMessage(result);
alertDialog.show();
@Override
protected void onProgressUpdate(Void... values)
super.onProgressUpdate(values);
这是我的 MainActivity
package app.buil.land.food.doymaj.doymaj;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity
EditText phone_Number;
EditText user_Name;
EditText pass_Word;
Button singButton;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// singButton = (Button)findViewById(R.id.sing_id);
// singButton.setOnClickListener(kyListener);
phone_Number =(EditText)findViewById(R.id.mobile_id);
user_Name =(EditText)findViewById(R.id.name_id);
pass_Word =(EditText)findViewById(R.id.p_id);
// Push_Identity db = new Push_Identity(this,"CustomerDatabas.db",null,1);
public boolean validate(EditText[] fields)
for(int i = 0; i < fields.length; i++)
EditText currentField = fields[i];
if(currentField.getText().toString().length() <= 0)
switch (i)
case 0:
Toast.makeText(getApplicationContext(),"شماره تلفن وارد نشده ",Toast.LENGTH_LONG).show() ;
break;
case 1:
Toast.makeText(getApplicationContext(),"نام کاربری وارد نشده ",Toast.LENGTH_LONG).show() ;
break;
case 2:
Toast.makeText(getApplicationContext(),"رمز وارد نشده ",Toast.LENGTH_LONG).show() ;
break;
return false;
return true;
//private View.OnClickListener kyListener = new View.OnClickListener()
public void send_number(View v)
// do something when the button is clicked
// Yes we will handle click here but which button clicked??? We don't know
boolean fieldsOK = validate(new EditText[] phone_Number, user_Name, pass_Word );
if (fieldsOK ==true)
String Phon = phone_Number.getText().toString();
Toast.makeText(getApplicationContext(),Phon,Toast.LENGTH_LONG);
// the Tooast dose not display anything
// it seems that the EditText is empty buy i enter the value in
// in it.
String type ="login";
backGroundActivities back = new backGroundActivities(this);
back.execute(type,Phon);
//
// ;
XML
<EditText
android:id="@+id/mobile_id"
android:layout_
android:layout_
android:background="@drawable/customized_edtitext"
android:drawablePadding="15dp"
android:paddingRight="10dp"
android:paddingLeft="15dp"
android:drawableRight="@drawable/ic_smartphone"
android:elevation="2dp"
android:textStyle="bold"
android:hint="@string/register_phone_commnet"
android:fontFamily="@font/iransansmedium"
android:textSize="12sp"
/>
<EditText
android:id="@+id/name_id"
android:layout_
android:layout_
android:layout_below="@id/mobile_id"
android:background="@drawable/customized_edtitext1"
android:drawablePadding="15dp"
android:paddingRight="10dp"
android:paddingLeft="15dp"
android:drawableRight="@mipmap/ic_user"
android:elevation="2dp"
android:textStyle="bold"
android:hint="@string/register_user_commnet"
android:fontFamily="@font/iransansmedium"
android:textSize="12dp" />
<EditText
android:id="@+id/p_id"
android:layout_
android:layout_
android:layout_below="@+id/name_id"
android:background="@drawable/customized_edtitext2"
android:drawablePadding="15dp"
android:paddingRight="10dp"
android:paddingLeft="15dp"
android:drawableRight="@mipmap/ic_unlocked"
android:elevation="2dp"
android:textStyle="bold"
android:hint="@string/register_pass_commnet"
android:fontFamily="@font/iransansmedium"
android:textSize="12sp"
android:paddingEnd="10dp" />
这是我的 php 页面的 url enter image description here
还有更多信息:我安装了 Genymotion,还安装了 bluestack 和 VirtaulBox。他们对端口有冲突吗?我的意思是这些软件会导致 Apache xampp 及其端口冲突吗?
【问题讨论】:
您确定您的 apache 服务器侦听端口 800?通常,您会找到类似 80 的内容。 谢谢 我如何找到 apache 服务器是否监听 800 端口? 我的意思是如何找到apache服务器监听的端口? 您添加了来自浏览器的屏幕截图。那一个有效吗? - 接下来尝试从移动设备上的浏览器访问该页面。 是的,提供的链接有效 【参考方案1】:我的 Xampp 正在使用 Port: 80,如下图所示。所以在IP地址下面写http://10.0.2.2:80/
对我有用。
【讨论】:
【参考方案2】:此答案假定浏览器屏幕截图显示页面加载成功。我相信,错误页面有点灰。
手头可能存在防火墙问题。由于您使用的是非标准端口,因此与 XAMPP 一起安装的防火墙例外可能不会涵盖该端口。
转到 Windows 防火墙高级设置 -> 入站规则。现在添加一个规则,允许 TCP 端口 800 上的流量。确保取消选中公共配置文件,这样如果您在公共 wifi 上,任何人都无法连接到此应用程序。
现在使用智能手机上的浏览器检查您的 PHP 应用程序是否可以访问。
【讨论】:
感谢我如何使用手机检查我是否可以访问 php 文件。我的意思是我应该将真正的手机连接到我的笔记本电脑,或者我可以通过 wifi 连接到带有手机的笔记本电脑跨度> 只需使用笔记本电脑连接的 Wifi。用浏览器访问php文件【参考方案3】:如果您有 wifi 并且您的计算机和真实设备(移动设备)连接到同一个 wifi,您可以使用NGROK 软件工具在您的真实设备中运行和调试您的应用程序。
运行 ngrok.exe 并输入 ngrok http 80,它会为您提供如下图所示的地址。
只需在您的应用中使用您使用 IP 地址的网址即可。 最好用。
【讨论】:
我在笔记本电脑上使用 Wifi,我在 Genymotion 上运行我的应用程序 这种情况下也可以使用ngrok以上是关于无法使用 android studio 连接到“xampp server localhost”的主要内容,如果未能解决你的问题,请参考以下文章
最近的 Android Studio 无法连接到 Firebase?
无法将 Android Studio 连接到我的手机或 Bluestacks
我无法使用带有 Android Studio 的 JDBC 连接到 SQL Server Express