2016-05-09 24 views
1

我的android应用程序连接到服务器,并从数据库中获取信息并填充列表视图。它工作正常xampp在我的本地主机。但将我的文件上传到我的服务器后,它不起作用。在日志中没有错误除外。凌空不填充ListView与远程服务器

d /乱射:[1] 2.onErrorResponse:ViewGuidesActivity

但是,当我在我的网页浏览器上运行我的PHP文件时,它返回JSON数据完美。

public class ViewGuidesActivity extends AppCompatActivity { 

private static final String TAG = ViewGuidesActivity.class.getSimpleName(); 
private ProgressDialog pDialog; 
private List<Guide> guideList = new ArrayList<Guide>(); 
private ListView listView; 
private CustomListAdapter adapter; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_view_guides); 

    listView = (ListView) findViewById(R.id.list); 
    adapter = new CustomListAdapter(this, guideList); 
    listView.setAdapter(adapter); 

    pDialog = new ProgressDialog(this); 
    // Showing progress dialog before making http request 
    pDialog.setMessage("Loading..."); 
    pDialog.show(); 

    // Creating volley request obj 
    JsonArrayRequest movieReq = new JsonArrayRequest(AppConfig.URL_GET_GUIDE_LIST, 
      new Response.Listener<JSONArray>() { 
       @Override 
       public void onResponse(JSONArray response) { 
        Log.d(TAG, response.toString()); 
        hidePDialog(); 

        // Parsing json 
        for (int i = 0; i < response.length(); i++) { 
         try { 

          JSONObject obj = response.getJSONObject(i); 
          Guide guide = new Guide(); 
          guide.setNgno(obj.getString("ngno")); 
          guide.setEmail(obj.getString("email")); 
          guide.setName(obj.getString("name")); 


          // adding movie to movies array 
          guideList.add(guide); 

         } catch (JSONException e) { 
          e.printStackTrace(); 
         } 

        } 

        // notifying list adapter about data changes 
        // so that it renders the list view with updated data 
        adapter.notifyDataSetChanged(); 
       } 
      }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      VolleyLog.d(TAG, "Error: " + error.getMessage()); 
      hidePDialog(); 

     } 
    }); 

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    this.getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

    // Adding request to request queue 
    AppController.getInstance().addToRequestQueue(movieReq); 

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> adapter, View view, int position, long id) { 
      Guide newGuide = guideList.get(position); 
      String email = newGuide.getEmail(); 
      String ngno = newGuide.getNgno(); 
      //System.out.println(email); 

      Intent i = new Intent(getApplicationContext(), GuideDetails.class); 
      i.putExtra("email", email); 
      i.putExtra("ngno", ngno); 
      startActivity(i); 
     } 
    }); 

} 

我的PHP文件:

$con=mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB"); 
$sql = "select * from guide"; 
$result = mysql_query($sql); 
$json = array(); 

if(mysql_num_rows($result)){ 
     while($row=mysql_fetch_assoc($result)){ 
       $json[]=$row; 
     } 
} 
mysql_close($con); 
echo json_encode($json); 

我知道,我使用一些过时的方法,因为我审阅一个过时的教程,和IM在转换的过程中所有的PHP要使用的文件mysqli。但首先我需要让我的应用程序工作。

这里是我的JSON数据:

http://srilankatouristguides.com/guideList.php

我用我的代码相同的URL。可能是什么问题?不能弄明白,因为它可以很好地与我的本地主机。任何帮助,将不胜感激。

+0

检查数据库用户名,密码和主机是否正确 –

+1

1.检查onResponse方法是否返回预期结果。 2)也许发布适配器代码。 – danypata

+0

请向我们展示Log.d(TAG,response.toString());'是否正在打印 - 或者打印完成。我们需要确认这是否是从服务器返回的数据或列表视图未更新的问题。 – ishmaelMakitla

回答

0

我设法解决它。未使用mysqli正在导致连接问题。可能服务器没有使用已弃用的方法,所以我的代码不起作用。将我的PHP代码转换为mysqli后,一切正常。感谢指针家伙!