11

我正在与接受发布数据而不是表单数据的文件上传服务交谈。默认情况下,javaHttpURLConnectionContent-Type标头设置为application/x-www-form-urlencoded. 如果我发布纯数据,这显然是错误的。

我(客户)不知道内容类型。我根本不想设置Content-Type标题。该服务有一个功能,它会猜测内容类型(基于文件名,从文件中读取一些数据等)。

如何取消设置标题?没有删除标头,将其设置为null不会更改值并将其设置为空字符串会导致标头设置为没有值。

4

4 回答 4

1

我还没有测试过这种方法,但你可以试试这个:

扩展 HttpURLConnection 并尝试覆盖其 getContentHandler() 和 setContentHandler(...) 方法。这很可能应该起作用,您将查看 getContentHandler() 的代码。

于 2013-01-17T05:05:25.797 回答
0

使用 Apache HttpClient而不是 URLConnection

使用 fluent Request生成你的请求

使用 removeHeader()

于 2013-01-17T05:04:12.973 回答
0

您是什么意思“我根本不希望设置 Content-Type 标头”?

浏览器(或其他 http 客户端)将您的 post 请求发送到服务器,因此它必须通知服务器它对参数进行编码的方式。

如果未设置 Content-Type 标头,则在服务器端,您(=您的服务器)将无法理解如何解析接收到的数据。

如果您没有设置 Content-Type,将使用默认值。

您的浏览器(或其他 http 客户端)必须做两件事:

  1. 发送键/值对。
  2. 通知服务器键/值对是如何编码的。

所以,完全摆脱这个头是不可能的。

于 2013-01-17T05:27:16.420 回答
0

我刚刚通过将标头设置为空来完成此操作。

connection.setRequestProperty(MY_HEADER, null);
于 2016-12-14T16:40:37.520 回答