我在 Perl 中有以下代码,它发布到我的 HTTP Servlet,调用带有一些 XML 数据的 API。
my $my_hash = {
'env.adapterName' => "DefaultAdapter",
'env.systemName' => "DefaultSystem",
'env.userId' => "admin",
'env.progId' => "PerlHttpTest",
InteropApiName => $apiName,
InteropApiData => $xmlData
};
my $res = $ua->request(POST 'http://hostname/interop/InteropHttpServlet', $my_hash);
我想用 Java 来做,但我很挣扎。有人可以指出我正确的方向吗?我想像上面那样将数据发布到我的 servlet 并取回响应(它将是 XML)。
最佳答案
标准 Java SE API 为您提供 java.net.URLConnection
触发和处理 HTTP 请求。
String query = "env.adapterName=DefaultAdapter"
+ "&env.systemName=DefaultSystem"
+ "&env.userId=admin"
+ "&env.progId=PerlHttpTest";
+ "&" + URLEncoder.encode(interopApiName, "UTF-8") + "=" + URLEncoder.encode(apiName, "UTF-8")
+ "&" + URLEncoder.encode(interopApiData, "UTF-8") + "=" + URLEncoder.encode(xmlData, "UTF-8");
URLConnection connection = new URL("http://hostname/interop/InteropHttpServlet").openConnection();
connection.setDoOutput(true); // Triggers POST.
connection.getOutputStream().write(query.getBytes("UTF-8"));
InputStream response = connection.getInputStream();
// ...
有第 3 方 API 使这一切变得更容易,例如 Apache HttpComponents Client .
另见:
关于java - 要发布到 servlet 的 Perl 代码 - 转换为 Java?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7243759/