0

当我通过 http post 获取参数时,我得到了一个JsonException.

下面是代码:

protected ArrayList<String> doInBackground(ArrayList<String>... params) {

        ArrayList<String> nameSuccess = new ArrayList<String>();
        HttpClient httpclient = new DefaultHttpClient();
        GeneralConstans GC = new GeneralConstans();
        HttpPost httpget = new HttpPost(GC.PasswordUrl);
        HttpResponse response;
        String result = null;
        try {

            HttpContext ctx = new BasicHttpContext();

            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(
                    2);
            nameValuePairs.add(new BasicNameValuePair("otpPwd", EdtText
                    .getText().toString()));
            httpget.setEntity(new UrlEncodedFormEntity(nameValuePairs,
                    "UTF-8"));

            response = httpclient.execute(httpget, ctx);
            HttpEntity resEntity = response.getEntity();

            if (resEntity != null) {
                result = EntityUtils.toString(resEntity);
                JSONObject arr = new JSONObject(result);

                name = (arr.get("name")).toString();
                error = (arr.get("error")).toString();
                nameSuccess.add(0, name);
                nameSuccess.add(1, error);
            }
            return nameSuccess;


        } catch (JSONException e) {
            e.printStackTrace();
        }

        return null;
    }

JSONObject arr = new JSONObject(result);我得到例外的那一行。

我是 Android 编程新手。

loccat : 08-14 16:23:59.388: E/WindowManager(10626): Activity tr.com.turkcell.shmobile.PasswordConfirmationActivity 泄露了最初添加的窗口 com.android.internal.policy.impl.PhoneWindow$DecorView@414fa9e0这里 08-14 16:23:59.388: E/WindowManager(10626): android.view.WindowLeaked: Activity tr.com.turkcell.shmobile.PasswordConfirmationActivity 已泄露窗口 com.android.internal.policy.impl.PhoneWindow$DecorView@ 414fa9e0 最初添加在这里 08-14 16:23:59.388: E/WindowManager(10626): at android.view.ViewRootImpl.(ViewRootImpl.java:374) 08-14 16:23:59.388: E/WindowManager(10626 ): 在 android.view.WindowManagerImpl.addView(WindowManagerImpl.java:292) 08-14 16:23:59.388: E/WindowManager(10626): 在 android.view.WindowManagerImpl.addView(WindowManagerImpl.java:224) 08- 14 16:23:59.388:E/WindowManager(10626):在 android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:149) 08-14 16:23:59.388: E/WindowManager(10626): 在 android.view.Window$LocalWindowManager.addView(Window.java:549) 08-14 16:23:59.388: E/WindowManager(10626): 在 android.app.Dialog.show(Dialog.java:277) 08-14 16:23:59.388: E/WindowManager(10626): 在 android. app.ProgressDialog.show(ProgressDialog.java:116) 08-14 16:23:59.388: E/WindowManager(10626): 在 android.app.ProgressDialog.show(ProgressDialog.java:99) 08-14 16:23: 59.388: E/WindowManager(10626): at android.app.ProgressDialog.show(ProgressDialog.java:94) 08-14 16:23:59.388: E/WindowManager(10626): at tr.com.turkcell.shmobile.PasswordConfirmationActivity $GetName.onPreExecute(PasswordConfirmationActivity.java:140) 08-14 16:23:59.388: E/WindowManager(10626): 在 android.os.AsyncTask。executeOnExecutor(AsyncTask.java:586) 08-14 16:23:59.388: E/WindowManager(10626): 在 android.os.AsyncTask.execute(AsyncTask.java:534) 08-14 16:23:59.388: E/ WindowManager(10626): at tr.com.turkcell.shmobile.PasswordConfirmationActivity$1$1.run(PasswordConfirmationActivity.java:53) 08-14 16:23:59.388: E/WindowManager(10626): at android.app.Activity.runOnUiThread (Activity.java:4591) 08-14 16:23:59.388: E/WindowManager(10626): at tr.com.turkcell.shmobile.PasswordConfirmationActivity$1.onClick(PasswordConfirmationActivity.java:50) 08-14 16:23: 59.388: E/WindowManager(10626): 在 android.view.View.performClick(View.java:4084) 08-14 16:23:59.388: E/WindowManager(10626): 在 android.view.View$PerformClick.run (View.java:16966) 08-14 16:23:59.388: E/WindowManager(10626): 在 android.os.Handler.handleCallback(Handler.java:615) 08-14 16:23:59.388: E/WindowManager(10626): 在 android.os.Handler.dispatchMessage(Handler.java:92) 08-14 16:23:59.388: E/WindowManager(10626): 在android.os.Looper.loop(Looper.java:137) 08-14 16:23:59.388: E/WindowManager(10626): 在 android.app.ActivityThread.main(ActivityThread.java:4754) 08-14 16: 23:59.388: E/WindowManager(10626): 在 java.lang.reflect.Method.invokeNative(Native Method) 08-14 16:23:59.388: E/WindowManager(10626): 在 java.lang.reflect.Method。调用(Method.java:511)08-14 16:23:59.388:E/WindowManager(10626):在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)08-14 16: 23:59.388: E/WindowManager(10626): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) 08-14 16:23:59.388: E/WindowManager(10626): 在 dalvik.system .NativeStart。主要(本机方法)08-14 16:24:00.788:W/System.err(10626):org.json.JSONException:值(JSONObject.java:158)08-14 16:24:00.788:W/System。错误(10626):在 org.json.JSONObject.(JSONObject.java:171)08-14 16:24:00.788:W/System.err(10626):在 tr.com.turkcell.shmobile.PasswordConfirmationActivity$GetName。 doInBackground(PasswordConfirmationActivity.java:102) 08-14 16:24:00.798: W/System.err(10626): at tr.com.turkcell.shmobile.PasswordConfirmationActivity$GetName.doInBackground(PasswordConfirmationActivity.java:1) 08-14 16:24:00.798: W/System.err(10626): 在 android.os.AsyncTask$2.call(AsyncTask.java:287) 08-14 16:24:00.798: W/System.err(10626): 在java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 08-14 16:24:00.798: W/System.err(10626): at java.util.concurrent.FutureTask.run(FutureTask.java :137) 08-14 16:24:00.798:W/System.err(10626): 在 android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 08-14 16:24:00.798: W/System.err(10626): 在 java.util。 concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 08-14 16:24:00.798: W/System.err(10626): 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)

4

1 回答 1

0

尝试使用以下代码使用 HTTP Post 方法连接到您的网络服务器:

    HttpPost post = new HttpPost("SERVER_URL");
    HttpClient hc = new DefaultHttpClient();
    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
    nameValuePairs.add(new BasicNameValuePair("otpPwd", EdtText
                .getText().toString()));
    try {
        post.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        post.getParams().setBooleanParameter("http.protocol.expect-continue", false);
        HttpResponse rp = hc.execute(post);
        json = EntityUtils.toString(rp.getEntity());
        if (!json.equals("") || !json.equals(null)) {
            JSONObject arr = new JSONObject(result);
            name = (arr.get("name")).toString();
            error = (arr.get("error")).toString();
            nameSuccess.add(0, name);
            nameSuccess.add(1, error);
        }
        return json;
    } catch (NoRouteToHostException er) {
        er.printStackTrace();
        return null;
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        return null;
    }
于 2013-08-14T13:43:59.643 回答