2015-07-20 2 views
0

Я создал класс, который извлекает данные из базы данных MySQL и отображает их в различные текстовые редакторы, как показано ниже. При тестировании приложения на моем локальном хосте он работает и извлекает данные из массива JSON через файл PHP, однако, когда я изменяю URL-адрес HTTPRequest с локального хоста http://10.0.2.2/concurency/get_user_details_test.php удаленному хосту, http://concurrenceypule.netau.net/get_user_details_test.php приложение, запущенное на версии 2.3, сокрушительно. Вся информация о подключении удаленной базы данных работает, так как она правильно отображает данные через веб-браузер. Что может вызвать дробление приложения и как его можно разрешить.удаленное подключение к серверу в приложении android

private static final String url_product_detials = "http://concurrenceypule.netau.net/get_user_details_test.php"; 

class GetProductDetails extends AsyncTask<String, String, String> { 
    protected String doInBackground(String... params) { 
    final String user_name2 = "paul"; 
     runOnUiThread(new Runnable() { 
      public void run() { 
       int success; 
       try { 
        List<NameValuePair> params = new ArrayList<NameValuePair>(); 
        params.add(new BasicNameValuePair("user_name",user_name2)); 
        JSONObject json = jsonParser.makeHttpRequest(
          url_product_detials, "GET", params); 
        Log.d("Single Product Details", json.toString()); 
        success = json.getInt(TAG_SUCCESS); 
        if (success == 1) { 
         JSONArray productObj = json 
           .getJSONArray(TAG_PRODUCT); 
          JSONObject product = productObj.getJSONObject(0); 

         txtName = (EditText) findViewById(R.id.username); 
         txtcontact = (EditText) findViewById(R.id.tv_contact); 
         txtemail = (EditText) findViewById(R.id.tv_email); 
         txtaddress = (EditText) findViewById(R.id.et_Address); 

         txtName.setText(product.getString(TAG_NAME)); 
         txtcontact.setText(product.getString(TAG_contact)); 
         txtemail.setText(product.getString(TAG_email)); 
         txtaddress.setText(product.getString(TAG_address)); 
        }else{ 

        } 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
     return null; 
    } 
    protected void onPostExecute(String file_url) { 
     pDialog.dismiss(); 
    } 
} 
+0

Это некоторые из ошибок. E/AndroidRuntime (11784): android.os.NetworkOnMainThreadException android.os.StrictMode $ AndroidBlockGuardPolicy.onNetwork (StrictMode.java:1156) java.net.InetAddress.lookupHostByName (InetAddress.java:385) –

+0

Это не верно , Использование AsyncTack не имеет смысла. Вы должны выполнить свою работу над методом doBackground() и вызвать onProgressUpdate() для обновления интерфейса. onProgressUpdate() работает в потоке пользовательского интерфейса. –

+0

удалите сбегаемую внутреннюю поверхность. Вам не нужно его там – dreamer1989

ответ

0

Есть ли в вашей TAG несколько экземпляров? запись или запись единственного числа запроса выборки каждый раз, если его сингулярный положить ваши следующий раздел кода в OnPostExecute(), удалить работоспособной в doInBackground() обусловленно ваш код уже в теме ..

 txtName = (EditText) findViewById(R.id.username); 
         txtcontact = (EditText) findViewById(R.id.tv_contact); 
         txtemail = (EditText) findViewById(R.id.tv_email); 
         txtaddress = (EditText) findViewById(R.id.et_Address); 

         txtName.setText(product.getString(TAG_NAME)); 
         txtcontact.setText(product.getString(TAG_contact)); 
         txtemail.setText(product.getString(TAG_email)); 
         txtaddress.setText(product.getString(TAG_address)); 

магазин ваш рекорд в переменной в doInBackground(), а затем перейти к EditText объект

String temp=product.getString(TAG_NAME); 
txtName.setText(temp); 

в OnPostMethod() добавить

super.onPostExecute(file_url); 

Добавьте эти строки в manifest.xml файл, если вы Ждут» t надеть его.

<uses-permission android:name="android.permission.INTERNET"/> 

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 

наконец проверить ваш LogCat ваша JSON является разбор правильно, а затем обновить ваш вопрос или ответ, и не прыгать по вкусу и антипатии первым.

+0

это не сработало, LogCat по-прежнему показывает ту же ошибку –

+0

http://stackoverflow.com/questions/19941703/android-os-networkonmainthreadexception-at-android-os-strictmodeandroidblockgua проверить эту ссылку @Abel Pule Chilunge –

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