android 4.0.3을 사용하여 JSON 객체를 사용하여 Gsoap 서버로 데이터를 보내려고합니다. 안드로이드 앱으로 NetworkOnMainThread Exception을 실행했습니다. 그런 다음 네트워크 액세스를 AsyncTask에 사용 했으므로 어쨌든이 예외의 요점은 표시되지 않습니다. 하지만 이제는 Nullpointer Exception을 얻고 있습니다. 오류 코드 logcat가있는 코드를 게시했습니다. 나는 이미 Google dint가 적절한 해결책을 얻었습니다. 그러니 누군가 내가 잘못 가고 있다고 나에게 말한다. 처음 JSON을 사용하여 데이터를 보내려고합니다 ... JSON을 사용하지 않고 서버에 데이터를 보낼 수 있지만 .. JSON으로 보내야합니다 ..Android : JSON-Object 및 HttpClient를 사용하여 Android에서 서버로 데이터 전송
이 라인에서 충돌이 발생합니다. doInBack = (DownloadWebPageTask) doInBack. execute (new String [] { "192.168.1.40"}); 여기
내 코드입니다 .. MainAcitivty 즉 AndroidJSONParsingActivity
public class AndroidJSONParsingActivity extends ListActivity {
// url to make request
// private static String url = "http://192.168.1.40";
// JSON Node names
private static final String TAG_CONTACTS = "contacts";
private static final String TAG_ID = "id";
private static final String TAG_NAME = "name";
private static final String TAG_EMAIL = "email";
private static final String TAG_ADDRESS = "address";
private static final String TAG_GENDER = "gender";
private static final String TAG_PHONE = "phone";
private static final String TAG_PHONE_MOBILE = "mobile";
private static final String TAG_PHONE_HOME = "home";
private static final String TAG_PHONE_OFFICE = "office";
// contacts JSONArray
JSONArray contacts = null;
private AsyncTask<String, Void, String> doInBack;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Hashmap for ListView
ArrayList<HashMap<String, String>> contactList = new ArrayList<HashMap<String, String>>();
// Creating JSON Parser instance
JSONParser jParser = new JSONParser();
doInBack = (DownloadWebPageTask) doInBack
.execute(new String[] { "http://192.168.1.40" });
// getting JSON string from URL
JSONObject json = jParser.getJSONFromUrl(doInBack);
try {
// Getting Array of Contacts
contacts = json.getJSONArray(TAG_CONTACTS);
// looping through All Contacts
for (int i = 0; i < contacts.length(); i++) {
JSONObject c = contacts.getJSONObject(i);
// Storing each json item in variable
String id = c.getString(TAG_ID);
String name = c.getString(TAG_NAME);
String email = c.getString(TAG_EMAIL);
String address = c.getString(TAG_ADDRESS);
String gender = c.getString(TAG_GENDER);
// Phone number is agin JSON Object
JSONObject phone = c.getJSONObject(TAG_PHONE);
String mobile = phone.getString(TAG_PHONE_MOBILE);
String home = phone.getString(TAG_PHONE_HOME);
String office = phone.getString(TAG_PHONE_OFFICE);
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
// adding each child node to HashMap key => value
map.put(TAG_ID, id);
map.put(TAG_NAME, name);
map.put(TAG_EMAIL, email);
map.put(TAG_PHONE_MOBILE, mobile);
// adding HashList to ArrayList
contactList.add(map);
}
} catch (JSONException e) {
e.printStackTrace();
System.out.println("JsonException--- " + e.getMessage());
}
/**
* Updating parsed JSON data into ListView
* */
ListAdapter adapter = new SimpleAdapter(this, contactList,
R.layout.list_item, new String[] { TAG_NAME, TAG_EMAIL,
TAG_PHONE_MOBILE }, new int[] { R.id.name, R.id.email,
R.id.mobile });
setListAdapter(adapter);
// selecting single ListView item
ListView lv = getListView();
// Launching new screen on Selecting Single ListItem
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// getting values from selected ListItem
String name = ((TextView) view.findViewById(R.id.name))
.getText().toString();
String cost = ((TextView) view.findViewById(R.id.email))
.getText().toString();
String description = ((TextView) view.findViewById(R.id.mobile))
.getText().toString();
// Starting new intent
Intent in = new Intent(getApplicationContext(),
SingleMenuItemActivity.class);
in.putExtra(TAG_NAME, name);
in.putExtra(TAG_EMAIL, cost);
in.putExtra(TAG_PHONE_MOBILE, description);
startActivity(in);
}
});
}
private class DownloadWebPageTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
String response = "";
for (String url : urls) {
DefaultHttpClient client = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url);
try {
HttpResponse execute = client.execute(httppost);
InputStream content = execute.getEntity().getContent();
BufferedReader buffer = new BufferedReader(
new InputStreamReader(content));
String s = "";
while ((s = buffer.readLine()) != null) {
response += s;
}
} catch (Exception e) {
e.printStackTrace();
}
}
return response;
}
@Override
protected void onPostExecute(String result) {
}
}
}
JsonParser.java 클래스
public class JSONParser {
static InputStream is = null;
static JSONObject jObj = null;
static String json = "";
// constructor
public JSONParser() {
}
public JSONObject getJSONFromUrl(String url) {
// Making HTTP request
try {
// defaultHttpClient
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
json = sb.toString();
} catch (Exception e) {
Log.e("Buffer Error", "Error converting result " + e.toString());
}
// try parse the string to a JSON object
try {
jObj = new JSONObject(json);
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}
// return JSON String
return jObj;
}
public JSONObject getJSONFromUrl(AsyncTask<String, Void, String> doInBack) {
// TODO Auto-generated method stub
return null;
}
}
SingleMenuItemActivity.java 클래스
public class SingleMenuItemActivity extends Activity {
// JSON node keys
private static final String TAG_NAME = "name";
private static final String TAG_EMAIL = "email";
private static final String TAG_PHONE_MOBILE = "mobile";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.single_list_item);
// getting intent data
Intent in = getIntent();
// Get JSON values from previous intent
String name = in.getStringExtra(TAG_NAME);
String cost = in.getStringExtra(TAG_EMAIL);
String description = in.getStringExtra(TAG_PHONE_MOBILE);
// Displaying all values on the screen
TextView lblName = (TextView) findViewById(R.id.name_label);
TextView lblCost = (TextView) findViewById(R.id.email_label);
TextView lblDesc = (TextView) findViewById(R.id.mobile_label);
lblName.setText(name);
lblCost.setText(cost);
lblDesc.setText(description);
}
}
내 로그 캣 오류 보고서
01 23,516,06-08 17:46:55.459: E/AndroidRuntime(2542): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.androidhive.jsonparsing/com.androidhive.jsonparsing.AndroidJSONParsingAct ivity}: java.lang.NullPointerException
06-08 17:46:55.459: E/AndroidRuntime(2542): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
06-08 17:46:55.459: E/AndroidRuntime(2542): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
06-08 17:46:55.459: E/AndroidRuntime(2542): at android.app.ActivityThread.access$600(ActivityThread.java:123)
06-08 17:46:55.459: E/AndroidRuntime(2542): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
06-08 17:46:55.459: E/AndroidRuntime(2542): at android.os.Handler.dispatchMessage(Handler.java:99)
06-08 17:46:55.459: E/AndroidRuntime(2542): at android.os.Looper.loop(Looper.java:137)
06-08 17:46:55.459: E/AndroidRuntime(2542): at android.app.ActivityThread.main(ActivityThread.java:4424)
06-08 17:46:55.459: E/AndroidRuntime(2542): at java.lang.reflect.Method.invokeNative(Native Method)
06-08 17:46:55.459: E/AndroidRuntime(2542): at java.lang.reflect.Method.invoke(Method.java:511)
06-08 17:46:55.459: E/AndroidRuntime(2542): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
06-08 17:46:55.459: E/AndroidRuntime(2542): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
06-08 17:46:55.459: E/AndroidRuntime(2542): at dalvik.system.NativeStart.main(Native Method)
06-08 17:46:55.459: E/AndroidRuntime(2542): Caused by: java.lang.NullPointerException
06-08 17:46:55.459: E/AndroidRuntime(2542): at com.androidhive.jsonparsing.AndroidJSONParsingActivity.onCreate(AndroidJSONParsingActivity.java:62)
06-08 17:46:55.459: E/AndroidRuntime(2542): at android.app.Activity.performCreate(Activity.java:4465)
06-08 17:46:55.459: E/AndroidRuntime(2542): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
06-08 17:46:55.459: E/AndroidRuntime(2542): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
많은 감사 ..
AndroidJSONParsingActivity.java:62 줄은 어느 것입니까? – user370305
그 라인이 서버 URL을 보유 .. asyntask 행동에 .. –
은 .. 내가 점점 오전 같은 오류 .. 널 포인터 예외 .. :( –