【问题标题】:Android App crashes everytime I do a HTTP POST每次我执行 HTTP POST 时,Android 应用程序都会崩溃
【发布时间】:2015-09-24 10:29:41
【问题描述】:

我正在尝试创建一个执行 http POST 的简单 Android 应用程序。但是,每次我点击发送时,我的应用程序都会崩溃。我可以使用其他 REST API 客户端发送相同的请求。

http://xx.xx.xx.xx:2000/newUser(内容类型:应用程序/JSON) { “第一”:“测试”, “最后”:“测试”, “电子邮件”:“测试”, “通过”:“测试” }

这是java文件

public void send(View v)
{
    try {
        JSONObject parameters = new JSONObject();
        parameters.put("email", "test");
        parameters.put("pass", "test");
        parameters.put("first", "test");
        parameters.put("last", "test");

        String request        = "http://xx.xx.xx.xxx:2000/newUser";
        URL    url            = new URL( request );
        HttpURLConnection conn= (HttpURLConnection) url.openConnection();
        conn.setReadTimeout(10000 /*milliseconds*/);
        conn.setConnectTimeout(15000 /* milliseconds */);
        conn.setRequestMethod("POST");
        conn.setDoInput(true);
        conn.setDoOutput(true);
        conn.setChunkedStreamingMode(0);
        conn.setRequestProperty("Content-Type", "application/JSON");
        conn.setRequestProperty( "charset", "utf-8");
        conn.setRequestProperty( "Cache-Control", "no-cache");
        conn.setUseCaches( false );
        conn.connect();
        OutputStream out = new BufferedOutputStream(conn.getOutputStream());
        BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out, "UTF-8"));
        writer.write(parameters.toString());
        InputStream in = new BufferedInputStream(conn.getInputStream());

        // Close streams and disconnect.
        writer.close();
        out.close();
        conn.disconnect();

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

我确实在清单文件中设置了 android.permission.INTERNET。我的应用程序在
崩溃 连接.connect(); 输出流输出...

有什么想法吗???

【问题讨论】:

  • 你的日志猫在哪里???发布它
  • 请显示您的堆栈跟踪。
  • 尝试在 GUI 线程上发出网络请求。使用 AsyncTask
  • 您可以在堆栈跟踪中看到错误。总是。
  • @AnjaliTripathi 是的,我们需要这个。

标签: java android http-post


【解决方案1】:

使用AsyncTask

你不能在主线程上执行网络操作。

【讨论】:

    【解决方案2】:

    异步任务

    AsyncTask 是 Android 提供的一个抽象类,可以帮助我们正确使用 UI 线程。此类允许我们执行长/后台操作并在 UI 线程上显示其结果,而无需操作线程 有关更多详细信息,请查看此内容。

    http://developer.android.com/reference/android/os/AsyncTask.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多