当前位置: 首页 > 知识库问答 >
问题:

Android POST请求不工作

吴高远
2023-03-14

我正在这样做:

@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/

而且它是有效的。。。有什么问题吗?

共有1个答案

岳时铭
2023-03-14

嘿,试着使用这种语法。

@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;
}

希望这有帮助。:)

 类似资料:
  • 在简单的我的表单,我想使用ajax与和获取和发布请求后,使用和提交表单我的页面是刷新和警报不工作的控制器验证。 控制器中的简单请求ajax无法正常工作 我的形式: 我的控制器: 我的路线:

  • 但当我运行它时,它会给我这个错误: E/AndroidRuntime:致命异常:主进程:com.example.webTestConnection,PID:23550 Android.os.networkonMaintHreadexception,Android.os.strictmode$AndroidBlockGuardPolicy.onNetwork(strictmode.java:1166

  • 我有一个和一个。点击按钮,我想打开键盘,同时请求关注,以便用户直接开始在键盘上键入文本,并出现在中。但是在我的例子中,当我点击按钮时,它会打开键盘,但它不会将焦点设置在上,因为用户必须再次单击才能在上面写入。问题是什么。任何帮助或建议。 单击按钮时的代码

  • 下面的测试不使用mocha-chai,它能够获得输入请求,但抛出错误消息。 输出: Web请求:/HB::Error:超时2000ms。确保在此测试中调用了done()回调。

  • 我正在用GoogleVolley Api创建一个android应用程序,它处理我的应用程序和php脚本之间的连接。出于某种原因,该应用程序没有向我的服务器发送任何数据,也许这里的某个人可以找到它? 我的方法被正确调用,但是当我尝试打印它时,它返回null!一切实际上都在工作,除了数据没有正确传递,我相信,因为我的php脚本抱怨变量为空

  • 我正在使用Android截击来发出请求。所以我使用这个代码。我不明白一件事。我在服务器中检查params是否始终为null。我认为GETPARAMS()不工作。我应该做些什么来解决这个问题。