如何在Java中以POST请求的方式在用户首选浏览器中打开网页

6

好的,我知道如何在代码中向网站发送HTTP POST请求,并且知道如何在浏览器中打开URL(HTTP GET)。但是如何在浏览器中打开HTTP POST请求呢?

编辑:更多细节: 该网站允许您打开一个页面以添加新条目,您可以通过POST该信息来填充该页面。我在我的Java桌面应用程序中拥有这些信息,因此从我的Java应用程序中,我想在用户首选浏览器中打开添加新条目页面,并填充已知信息。

编辑: 所以我尝试了Lee的答案,并成功构建了一个带有提交按钮的网页,当您单击它时,它会转到最终页面并填充字段,但我无法使JavaScript正常工作,以便自动转到那里而无需按下提交按钮。这是我生成的网页:

<html><head>
<script type = "text/javascript">
function onLoad() 
{
    document.getElementById('form').submit();
}
</script>
</head>
<body>
<form name="form" action="http://test.musicbrainz.org/release/add" method="post">
<input name="name" type="hidden" value="Porcupine"/>
<input type="submit" value="send">
</form>
</body>

1
好的,虽然使用 getElementById 根据名称获取元素是可行的,但这只是一种巧合(因为名称和 ID 共享命名空间)。仅仅声明一个名为 onLoad 的函数是不足以在文档加载时运行它的。你需要在 body 中添加 onload 事件: <body onload="onLoad()">,这样就可以实现了。 - Lee Kowalkowski
3个回答

4
由于无法通过地址栏进行POST,您需要提供一个包含HTML表单并提交该表单的页面。您可以尝试构建一个类似于书签的javascript: URI,该URI会生成一个HTML表单并将其提交。但我不能确定JavaScript URI是否与您首选浏览器相关联。所以我要偏向于“不行”。但是,如果已启用JavaScript,则可以获取包含表单和可进行POST的JavaScript的页面。

所以我创建了一个带有表单的网页,并使用一些JavaScript来提交该表单,谢谢,我可以看到这将有效,尽管我感到惊讶需要进行这样的黑客攻击。 - Paul Taylor

1

我猜想你需要“POST”是因为你有数据要发送。但我感觉我们没有足够的信息来正确回答这个问题。我猜想你知道后端需要发布的数据是什么。同时,我也猜想你不希望用户手动提交任何东西。我可以想象,在你的页面上,你有一个用户,而在后端,你有一个httpclient来为你发布数据。在你的页面上,你可以让javascript调用你的servlet(或其他)来发布数据,并将输出提供给一个新窗口(或其他)。


@DeShaun 已添加所请求的信息。 - Paul Taylor

0

使用 Firefox 的 Poster 插件:

“一款开发者工具,用于与 Web 服务和其他 Web 资源进行交互,让您可以发出 HTTP 请求、设置实体主体和内容类型。这使您能够与 Web 服务进行交互并检查结果...”

或者如果您更喜欢 Google Chrome


不好意思,我需要一个纯Java解决方案,可以与用户喜欢的任何浏览器配合使用。 - Paul Taylor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接