【问题标题】:Won't send all parameters to post http request不会发送所有参数来发布 http 请求
【发布时间】:2026-02-12 06:15:01
【问题描述】:

我正在尝试使用 java 发送 http 请求。这是我的代码:

String AnnonseUrl = "http://webpage.no/insert_annonse.php?info="+info+"&tittel="+tittel+"&bedriftsNavn="+bedriftsNavn+"&kontaktEmail="+kontaktEmail+"&varighet="+varighet+"&frist="+frist+"&url="+url+"&sted="+sted+"&kontaktNavn="+kontaktNavn;            

            URL url = new URL(AnnonseUrl);
            URLConnection uc = url.openConnection();
            BufferedReader in = new BufferedReader(
                                    new InputStreamReader(
                                    uc.getInputStream()));

            in.close();

只提交前三个参数..

如果我复制字符串“AnnonseUrl”并将其粘贴到我的浏览器中,那么一切正常。

【问题讨论】:

  • 什么不起作用?为什么?你期望会发生什么?反而发生了什么?有没有错误?

标签: java http url post request


【解决方案1】:

发帖时,参数在 Http Body 中发送: 试试这个:

URL u = new URL("http://www.*.com");
HttpURLConnection conn = (HttpURLConnection) u.openConnection();
conn.setDoOutput(true);
conn.connect();
DataOutputStream wr = new DataOutputStream (
              conn.getOutputStream ());
wr.writeBytes (urlParameters);
wr.flush();
wr.close();

urlParameters 是这样的:

 String urlParameters =
    "tittel="+URLEncoder.encode(tittel,"UTF-8")
    +"&bedriftsNavn"+URLEncoder.encode(bedriftsNavn,"UTF-8");

【讨论】:

  • 尝试此方法时出现错误。[ProtocolException: cannot write to a URLConnection if doOutput=false - call setDoOutput(true)]