使用 XAMPP 将 android 连接到本地服务器
Posted
技术标签:
【中文标题】使用 XAMPP 将 android 连接到本地服务器【英文标题】:Connecting android to a local server using XAMPP 【发布时间】:2017-03-22 00:30:56 【问题描述】:我正在尝试将数据从本地服务器获取到 android 设备,我使用的是免费的在线托管服务,在遇到一些不相关的技术问题之前一切正常,因此问题不太可能出在代码本身(只是一个想法)。无论如何,当我使用 XAMPP 迁移到本地服务器时,我的应用程序没有收到任何响应,我从手机浏览器访问了 php 文件,它给出了正确的结果,但应用程序本身完全没有声音。通过 SO 搜索,大多数问题都提到在文件的 URL 中放置正确的 IP 地址。我正在使用 volley,并且我插入了与我在浏览器中访问文件时完全相同的 URL,服务器似乎根本没有响应。
这是我正在使用的 php 代码:
<?php
include 'dbConnect.php';
$searchTerm='d';
$query = $conn->prepare('SELECT term,id FROM tag WHERE term LIKE :searchTerm');
$query->execute(array(':searchTerm'=>$searchTerm.'%'));
$result=$query->fetchAll(PDO::FETCH_ASSOC);
echo json_encode(array('result'=>$result));
?>
我正在使用 Volley 库来联系服务器,第一个文件是 CustomeAutoCompleteTextViewTextChangedListener.java
@Override
public void onTextChanged(CharSequence s, int start, int before, int count)
try
NetworkRequsts networkRequsts = new NetworkRequsts(context);
networkRequsts.tagsJsonObjectRequest("https://192.168.110.1:8080/Register.php");
catch (Exception e)
e.printStackTrace();
这是应该发出请求的地方,注意 URL,这是我认为问题所在,因为这是我在更改服务器时在代码中更改的唯一内容。
这是 Volley 请求:
NetworkRequsts.java
JsonObjectRequest tagJsonRequest=new JsonObjectRequest(url,tagSearchObject, new Response.Listener<JSONObject>()
@Override
public void onResponse(JSONObject response)
try
Log.d("Search term object",tagSearchObject.toString());
Log.d("respone Test", response.length()+" "+response.toString());
JASONArrayResponse=response.getJSONArray("result");
for(int i=0;i<JASONArrayResponse.length();i++)
JSONObject jsonObject=JASONArrayResponse.getJSONObject(i);
Log.d("Volley", jsonObject.getString("term"));
Log.d("searchTerm",register.tagsAutoCompleteTextView.getText().toString());
catch(JSONException JE)
JE.printStackTrace();
, new Response.ErrorListener()
@Override
public void onErrorResponse(VolleyError error)
if (error instanceof ServerError)
Log.e("Volley", "ServerError");
Toast.makeText(context.getApplicationContext(),error.getMessage(),Toast.LENGTH_LONG).show();
);
【问题讨论】:
为了通过 XAMPP 成功运行应用程序,您需要保持 IP 地址与服务器运行的系统 IP 地址相同,并且系统和移动设备都应连接到同一网络。所以交叉检查这些点。您可能在这里遗漏了一些东西。 使用https
和端口8080
可能会导致问题。
the server doesn't seem to respond at all.
什么意思?在 onResponse() 和 onErrorResponse() 你应该放置更多的日志语句。你没有涵盖所有的可能性。
应用程序没有调用任何异常,log.d 应该显示从服务器获取的 JSON 数组,但日志没有显示任何内容,只是我输入的字符,仅此而已
【参考方案1】:
首先检查服务器是否正常工作,使用localhost在浏览器中加载,如果正常工作,则将ip地址更改为系统ip。然后检查共享受限的网络连接属性。大多数情况下,连接失败的发生是由于防病毒程序或类似的东西限制了共享。授予所有权限后,它将起作用
【讨论】:
我可以从我的 PC(服务器)浏览器和手机浏览器访问该文件,如果是 AV 问题,那么为什么它允许手机浏览器连接但不允许应用程序连接? 您没有设置任何必要的权限。 可能你缺少 android.permission.INTERNET 如果是这种情况,它会给出错误,包括权限 你把jsonObjectRequest添加到requestQueue了吗?以上是关于使用 XAMPP 将 android 连接到本地服务器的主要内容,如果未能解决你的问题,请参考以下文章
Android - 尝试连接到本地服务器时出错(Xampp)
URL 使用 Android 模拟器连接到 XAMPP 服务器