我试图从我的本地服务器获取数据到Android设备,我使用免费的在线托管服务,在遇到一些非相关的技术问题之前一切正常,所以它不是可能问题在于代码本身(只是一个想法)。无论如何,当我使用XAMPP迁移到本地服务器时,我的应用程序没有得到任何响应,我从移动设备的浏览器访问了php文件并且它给出了正确的结果,但是应用本身给予完全沉默。通过搜索SO,大多数问题提到将正确的IP地址放在文件的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();
}
}
});
答案 0 :(得分:0)
首先检查服务器是否运行正常,使用localhost在浏览器中加载,如果工作正常,则将IP地址更改为系统ip。然后检查共享受限的网络连接属性。大多数情况下由于反病毒程序限制的共享或类似情况而发生连接失败。在给予所有权限后,它将起作用