POST请求的内容类型标头

时间:2011-10-15 05:13:00

标签: java http post

我有Java(在其他语言中类似,问题应该是语言无关的)我发送到服务器的POST请求。 POST请求只包含一些没有正文的POST参数。

我基本上有这个:

postData = URLEncoder.encode("user", "UTF-8") + "=" + URLEncoder.encode("jackychan", "UTF-8");
//HttpSessionToken.setRequestProperty("Content-Type", "application/xml");
OutputStream postContent = (OutputStream)HttpSessionToken.getOutputStream();
postContent.write(postData.getBytes("UTF-8"));

这很好用。问题在于第二行,目前是评论。取消注释这一行会破坏我的代码,好吧我的数据不是XML,所以我能理解这一点。对于某些REST服务,您必须POST一个完整的XML文档,但没有POST参数,类似这样的

postData = "<xml> whatever xml structure here </xml>"  
HttpSessionToken.setRequestProperty("Content-Type", "application/xml");
OutputStream postContent = (OutputStream)HttpSessionToken.getOutputStream();
postContent.write(postData.getBytes("UTF-8"));

这也有效。区别在于postData现在是一个XML,并且设置了内容类型。

现在的问题是,如果服务需要如示例1中的BOTH,POST参数和示例2中的xml正文,该怎么办?我该怎么做?如果这种情况从未发生过,为什么不发生呢?

谢谢,A。

1 个答案:

答案 0 :(得分:1)

您可以将其作为multipart / form-data执行,这样您就可以在单个POST正文中添加混合内容。它类似于multipart-mime,每个部分都有自己的内容类型。以下是Java中多部分表单数据的先前stackoverflow答案:How can I make a multipart/form-data POST request using Java?