2016-05-09 4 views
1

My Android-приложение подключается к серверу и получает информацию из базы данных и заполняет список. он отлично работает с xampp на моем localhost. но после загрузки моих файлов на мой сервер он не работает. в журнале нет ошибок.volley не заполняется ListView с удаленным сервером

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

Я использую тот же URL в своем коде. В чем может быть проблема? не могу понять, так как он отлично работает с моим localhost. любая помощь будет оценена по достоинству.

+0

проверить, правильно ли указано имя пользователя, пароль и хост –

+1

1.Проверьте, возвращает ли метод onResponse ожидаемый результат. 2) Может быть, код адаптера. – danypata

+0

Пожалуйста, покажите нам, что строка 'Log.d (TAG, response.toString());' print - или что она вообще печатается. Нам нужно подтвердить, является ли это вопрос о том, что данные не возвращаются с сервера или список не обновляется. – ishmaelMakitla

ответ

0

Мне удалось это исправить. Неиспользуемый mysqli вызывал проблемы с подключением. Вероятно, сервер не использует устаревшие методы, поэтому мой код не работает. После преобразования моего кода PHP на mysqli все работает. Спасибо за ребята!

Смежные вопросы