如何使用 HttpURLConnection 在 android 和 java 中正确 post url

How to properly post url in android with java using HttpURLConnection

我尝试使用 HttpURLConnection 向我的本地 (xampp) 服务器发送 post 请求,其中 url 像这样 http://xxx.xxx.0.3/Company/index.php/booking/c200/p-205/2025-02-09 8:2,服务器 php 文件在 url 中获取参数并将数据发送到 mysql 数据库。

url 在 postman agent 上工作正常,甚至另一个 get 方法请求在 android 应用程序中工作顺利。

然而,当我使用以下代码尝试 post 方法时:

public void postOrder() {
        TextView tv = findViewById(R.id.tv1);
        Thread t = new Thread( new Runnable() {
            @Override
            public void run() {
                HttpURLConnection conn = null;
                try {
                    String link = "http://xxx.xxx.0.3/Company/index.php/booking/c200/p-205/2025-02-09 8:2";
                    URL url = new URL(link);
                    conn = (HttpURLConnection) url.openConnection();
                    conn.setRequestMethod("POST");
                    conn.setReadTimeout(10000 /*ms*/);
                    conn.setConnectTimeout(15000 /*ms*/);
                    conn.connect();
                }
                catch (IOException e) {
                    Log.d("HTTP error: ", e.toString());
                }
                finally {
                    conn.disconnect();
                }
            }
        } );
        t.start();
}

它从未发送 url 因此没有数据存储到数据库。

经过 6 小时的反复试验,google 和搜索,我添加了这行代码:

InputStream is = conn.getInputStream();

终于成功了。 请回答我为什么只有添加这行代码后它才有效,它有什么作用?我认为 url 是在 conn.connect();

之后触发的

调用 connect() 只连接,但还没有发送任何东西。调用getResponseCode()强制发送请求。该方法比 getInputStream() 更安全,后者会在响应不是 2xx 时抛出异常(在这种情况下您需要 getErrorStream())。