凌空未使用远程服务器

时间:2016-05-09 09:00:38

标签: php android json listview android-volley

我的Android应用程序与服务器连接并从数据库获取信息并填写列表视图。它可以在我的 localhost 上使用 xampp 工作。但在将我的文件上传到我的服务器后,它无法正常工作。除了日志没有错误。

  

D / Volley:[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); 

我知道我使用了一些弃用的方法,因为我参考了一个过时的教程,并且我正在将所有 PHP 文件转换为使用 mysqli的即可。但首先我需要让我的应用程序正常工作。

这是我的 JSON 数据:

http://srilankatouristguides.com/guideList.php

我在我的代码中使用了相同的网址。可能是什么问题?无法弄清楚,因为它与我的 localhost 一起工作正常。任何帮助,将不胜感激。

1 个答案:

答案 0 :(得分:0)

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