【发布时间】:2014-08-08 11:28:42
【问题描述】:
大家好,我正在尝试将数据从我的 android 应用程序发送到 json 对象中的 Web 服务,但是当我单击发送按钮时应用程序崩溃了,任何人都可以帮助我解决我的问题吗? thx,下面是我的主要java代码:
public class MainActivity extends Activity {
private Button send;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
send= (Button)findViewById(R.id.btnSend);
send.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
JSONObject jsonobj; // declared locally so that it destroys after serving its purpose
jsonobj = new JSONObject();
try {
// adding some keys
jsonobj.put("name", "toto");
jsonobj.put("twitter", "twito");
jsonobj.put("country", "totoland");
} catch (JSONException ex) {
//buildref.setText("Error Occurred while building JSON");
ex.printStackTrace();
}
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost httppostreq = new HttpPost("bbqhmkcode.appspot.com/jsonservlet");
StringEntity se = null;
try {
se = new StringEntity(jsonobj.toString());
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
se.setContentType("application/json;charset=UTF-8");
se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json;charset=UTF-8"));
httppostreq.setEntity(se);
try {
HttpResponse httpresponse = httpclient.execute(httppostreq);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
}
这是 LogCat:
08-08 15:11:51.790: I/Process(24024): Sending signal. PID: 24024 SIG: 9
08-08 15:12:34.440: W/dalvikvm(24321): threadid=11: thread exiting with uncaught exception (group=0x41d3e700)
08-08 15:12:34.510: E/AndroidRuntime(24321): FATAL EXCEPTION: AsyncTask #1
08-08 15:12:34.510: E/AndroidRuntime(24321): java.lang.RuntimeException: An error occured while executing doInBackground()
08-08 15:12:34.510: E/AndroidRuntime(24321): at android.os.AsyncTask$3.done(AsyncTask.java:299)
08-08 15:12:34.510: E/AndroidRuntime(24321): at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
08-08 15:12:34.510: E/AndroidRuntime(24321): at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
08-08 15:12:34.510: E/AndroidRuntime(24321): at java.util.concurrent.FutureTask.run(FutureTask.java:239)
08-08 15:12:34.510: E/AndroidRuntime(24321): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
08-08 15:12:34.510: E/AndroidRuntime(24321): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
08-08 15:12:34.510: E/AndroidRuntime(24321): at java.lang.Thread.run(Thread.java:841)
08-08 15:12:34.510: E/AndroidRuntime(24321): Caused by: java.lang.NullPointerException
08-08 15:12:34.510: E/AndroidRuntime(24321): at org.apache.http.impl.client.AbstractHttpClient.determineTarget(AbstractHttpClient.java:518)
08-08 15:12:34.510: E/AndroidRuntime(24321): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:509)
08-08 15:12:34.510:E/AndroidRuntime(24321):在 org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487) 08-08 15:12:34.510: E/AndroidRuntime(24321): 在 com.example.MainActivity$HttpAsyncTask.doInBackground(MainActivity.java:72) 08-08 15:12:34.510: E/AndroidRuntime(24321): 在 com.example.MainActivity$HttpAsyncTask.doInBackground(MainActivity.java:1) 08-08 15:12:34.510: E/AndroidRuntime(24321): 在 android.os.AsyncTask$2.call(AsyncTask.java:287) 08-08 15:12:34.510: E/AndroidRuntime(24321): at java.util.concurrent.FutureTask.run(FutureTask.java:234)
【问题讨论】:
-
展示 LogCat 输出
-
请提供一些日志
-
为什么不使用 AsyncTask 或单独的线程来发送 json 数据??
-
您在主线程中调用 WS 会导致网络主线程异常。因此请尝试在后台异步调用您的 ws
标签: java android json http post