【问题标题】:Android POST request not workingAndroid POST 请求不起作用
【发布时间】:2016-10-08 20:50:07
【问题描述】:

我正在这样做:

@Override
protected Void doInBackground(String... strings) {

    try {
        String query = "username=" + strings[0] + "&duration=" + strings[1] + "&distance=" + strings[2];
        URL url = new URL(ScoresActivity.URL);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("POST");
        Writer writer = new OutputStreamWriter(conn.getOutputStream());
        writer.write(query);
        writer.flush();
        writer.close();
        /*conn.addRequestProperty("username", strings[0]);
        conn.addRequestProperty("duration", strings[1]);
        conn.addRequestProperty("distance", strings[2]);*/
        Log.v(TAG, strings[0] + " - " + strings[1] + " - " + strings[2]);
        //conn.connect();
    } catch(Exception e) {
        Log.e(TAG, "exception", e);
    }

    return null;
}

但是请求只是没有在服务器上生效......在服务器上我应该看到发送的数据,但我没有看到它们

我也试过这个:

curl -XPOST --data "username=duri&duration=600&distance=555" http://someurl.com/

它可以工作......可能是什么问题?

【问题讨论】:

  • 您是否检查过它不属于catch(Exception e) 块?
  • 是的,我已经调试过了,一步一步通过了try

标签: android


【解决方案1】:

嘿,试试这个语法。

@Override
protected String doInBackground(String... params) {

    String urlString = params[0];
    String userName = params[1];
    String password = params[2];
    URL url = null;
    InputStream stream = null;
    HttpURLConnection urlConnection = null;
    try {
        url = new URL(urlString);
        urlConnection = (HttpURLConnection) url.openConnection();
        urlConnection.setRequestMethod("POST");
        urlConnection.setDoOutput(true);

        String data = URLEncoder.encode("userName", "UTF-8")
                + "=" + URLEncoder.encode(userName, "UTF-8");

        data += "&" + URLEncoder.encode("password", "UTF-8") + "="
                + URLEncoder.encode(password, "UTF-8");

        urlConnection.connect();

        OutputStreamWriter wr = new OutputStreamWriter(urlConnection.getOutputStream());
        wr.write(data);
        wr.flush();

        stream = urlConnection.getInputStream();
        BufferedReader reader = new BufferedReader(new InputStreamReader(stream, "UTF-8"), 8);
        String result = reader.readLine();
        return result;

    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (urlConnection != null) {
            urlConnection.disconnect();
        }
    }

    try {
        Thread.sleep(2000);
    } catch (InterruptedException e) {
        e.printStackTrace();
        Log.i("Result", "SLEEP ERROR");
    }
    return null;
}

希望这会有所帮助。 :)

【讨论】:

  • 是的,问题是我没有从流阅读器中读取任何内容,因此没有发送请求...请记住始终通读 BufferedReader 以使工作正常,即使您不这样做'不需要结果...
  • 我遇到了同样的问题,我没有意识到你不能只是触发并忘记请求。
猜你喜欢
  • 2017-10-06
  • 2014-09-16
  • 1970-01-01
  • 1970-01-01
  • 2018-12-25
  • 1970-01-01
  • 2016-03-27
  • 2017-01-05
相关资源
最近更新 更多