我试图从本地服务器获取数据到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();
}
}
});
首先检查服务器是否正常工作,使用localhost加载浏览器,如果正常工作,然后将ip地址更改为系统ip。然后检查共享受限的网络连接属性。大多数情况下,连接失败发生,因为共享限制的反病毒程序或类似的东西。在给予所有权限后,它将工作