मैंने सुना है कि आईसीएस से शुरू होकर, इसे यूआई (मुख्य) थ्रेड पर नेटवर्क संचालन करने की अनुमति नहीं है। इसलिए, आपको इस ऑपरेशन को एक अलग थ्रेड में करने की आवश्यकता है। तो या तो AsyncTask . का उपयोग करें , थ्रेड या HandlerThread लूपर और हैंडलर के साथ वेब संचालन करने के लिए। अगर आप इसे फ्रोयो या जिंजरब्रेड चलाने वाले डिवाइस पर आजमाते हैं, तो यह ठीक रहेगा लेकिन आईसीएस पर नहीं।
हैंडलर या AsyncTask के माध्यम से इसे चलाने के आपके प्रयास के संबंध में, यह इस बात पर निर्भर करता है कि आपने इसे कैसे किया। उस कोड को पेस्ट करें ताकि मुझे समस्या दिखाई दे।
अपडेट करें
public class MySQLAndroidActivity extends ListActivity {
private static final String url = "http://X.X.X.X/test.php";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity2);
LoadTask t = new LoadTask();
t.execute(null);
}
private static class LoadTask extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
}
@Override
protected Void doInBackground(Void... params) {
doStuff();
return null;
}
}
public static void doStuff() {
JSONArray jArray;
String result = null;
InputStream is = null;
StringBuilder sb = null;
HttpResponse response;
HttpEntity entity;
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
// http post
try {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url);
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
response = httpclient.execute(httppost);
entity = response.getEntity();
is = entity.getContent();
} catch (Exception e) {
Log.e("log_tag", "Error in http connection" + e.toString());
System.exit(1);
}
// convert response to string
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
sb = new StringBuilder();
sb.append(reader.readLine() + "\n");
String line;
while ((line = reader.readLine()) != null) {
sb.append(line);
}
is.close();
result = sb.toString();
Log.i("json string", result);
} catch (Exception e) {
Log.e("log_tag", "Error converting result " + e.toString());
}
// parsing data
String idfriend;
String id1;
String id2;
try {
jArray = new JSONArray(result);
JSONObject json_data = null;
System.out.println("Length " + jArray.length());
Log.d("DB", "Length " + jArray.length());
for (int i = 0; i < jArray.length(); i++) {
System.out.println("counter " + i);
json_data = jArray.getJSONObject(i);
idfriend = json_data.getString("idfriend");
id1 = json_data.getString("id1");
id2 = json_data.getString("id2");
System.out.println("id1: " + id1);
}
} catch (JSONException e1) {
Log.d("DB", "Error somewhere");
} catch (ParseException e1) {
e1.printStackTrace();
}
}
}
*कुछ विधि कॉलिंग समस्याएं थीं और सबसे महत्वपूर्ण यह था कि आप JSONObject से Idfriend, Id1, Id2 के रूप में कुंजी निकाल रहे थे। जो गलत है क्योंकि आपके जेसन स्ट्रिंग में चाबियाँ idfriend, id1, id2 . जैसी हैं . इसका केस-संवेदी, इसलिए यह क्रैश हो रहा था।