Java HTTP 发布原始数据

标签 java apache-commons-httpclient multipartform-data

我希望根据我拥有的原始数据发出 HTTP post 请求。我花了一段时间寻找解决方案,进行了一些尝试,并且正在寻求一些帮助。我想要做的 PHP 代码如下所示:

<?
$url="http://localhost:3000";
$postdata="<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<hi></hi>";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
$result = curl_exec($ch);
curl_close($ch);

echo($result);
?>

我的尝试是这样的:

  private String setXmlPostHeader(Document doc, PostMethod postMethod) throws java.io.IOException, java.io.UnsupportedEncodingException,    
    javax.xml.transform.TransformerException
  {
     ByteArrayOutputStream xmlBytes = new ByteArrayOutputStream();
     XML.serialize( doc, xmlBytes );
     final byte[] ba = xmlBytes.toByteArray();
     String data = new String(ba, "utf-8");
     InputStreamRequestEntity re = new InputStreamRequestEntity(new ByteArrayInputStream(ba));
     postMethod.setRequestEntity(re);
     postMethod.setRequestHeader("Content-type", MediaType.XML.toString() + "; charset=UTF-8");
     return data;
  }

然后执行post方法,但这只是一个没有数据的帖子。有人看到我做的事情有什么不对吗?我想弄清楚如何改变这个方法以使其真正起作用。谢谢!

-肯

最佳答案

java.net.URLConnection不是吗?上课效果更好吗?

关于Java HTTP 发布原始数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3411093/

相关文章:

JavaFX:将属性绑定(bind)到 Pane 时遇到问题

java - 使用 Java for Android 获取响应 rest web 服务

java - 可以将 Jackson 配置为从所有字符串属性中修剪前导/尾随空格吗?

java - 为什么我从 Jakarta Commons HttpClient 收到空请求?

java - Apache HTTPClient 每个请求打开一个新连接?

android - 是否可以使用 Retrofit 通过 Multipart 发送 String[]?

jsp - 如何在多部分发布请求中传递参数

java - 用于提供动态文本替换文件的 Web 应用程序

java - 在 Spring Boot 2.2.5 应用程序中上传文件时出现 MalformedStreamException

java - Http Get 请求 - 实际发送什么数据?