【发布时间】:2015-08-21 09:13:32
【问题描述】:
我正在尝试在 Jersey 1.17 中创建一个空的 PUT 请求,以便像这样与 Azure 存储 REST api 进行通信
HTTP客户端
ClientConfig config = new DefaultClientConfig();
config.getProperties().put(ClientConfig.PROPERTY_CONNECT_TIMEOUT,
connectionTimeOut);
config.getProperties().put(ClientConfig.PROPERTY_READ_TIMEOUT,
readTimeOut);
Client client = Client.create(config);
client.addFilter(new LoggingFilter());
WebResource webResource = client.resource(
"https://" + accountName + "." + storageMedium + "."
+ host)
.path(containerName)
.queryParam("restype", "container");
PUT 请求
//
ClientResponse response = webResource
.header(Constants.X_MS_VERSION, "2015-02-21")
.header("x-ms-date", storage.date)
.header("Authorization", authorizationString).put(ClientResponse.class);
服务器的响应是
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD><TITLE>Length Required</TITLE>
<META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD>
<BODY><h2>Length Required</h2>
<hr><p>HTTP Error 411. The request must be chunked or have a content length.</p>
</BODY></HTML>
我认为问题不在于 Azure REST api,因为 PUT 请求在 Postman 中有效。我不知道我的泽西客户有什么问题。有人遇到过类似的情况吗?
【问题讨论】:
标签: azure request put jersey-client http-error