![](/img/trans.png)
[英]How to calculate total response time of an HTTP request using AsyncHttpClient library
[英]How to build HTTP DELETE request with JSON encoded body using AsyncHttpClient
我需要编写一个HTTP客户端,以便通过其REST API与Floodlight OpenFlow控制器进行通信。
为了进行测试,我使用python进行了测试,效果很好。 但是现在我必须要用Java来完成它,但我仍然处于初学者水平。 我的一个应用程序使用AsyncHttpClient调度异步GET请求,并且工作正常。 现在,作为Floodlight的REST客户端,它必须使用JSON编码的主体进行POST和DELETE。 我的异步POST请求代码正常工作。
但是DELETE运气不好。
不知何故,它没有将JSON字符串写入其请求主体。 该代码与POST几乎相同。 对于调试,我不将AsyncCompletionHandler实例提供给execute()方法。
System.out.println(ofEntry.toJson()); // this returns {"name": "xyz"} as expected.
Future<Response> f = httpClient.prepareRequest(new RequestBuilder("DELETE")
.setUrl("http://" + myControllerBaseUrl + urlPathFlowPostDelete)
.setHeader("content-type", "application/json")
.setBody(ofEntry.toJson())
.build()).execute();
System.out.println(f.getStatusCode()); // returns 200.
System.out.println(f.getResponseBody()); // returns {"status" : "Error! No data posted."}.
为了确保这一点,我偷窥了wireshark的数据包转储,发现服务器没有在撒谎:)
该库的作者已经编写了大量相关的,有价值的信息,但是不幸的是,我找不到专门用于构建DELETE请求的示例代码。
我非常感谢您的任何建议,指点,当然还有精确的解决方案!
不确定在这里回答我自己的问题是否合适,但是我刚刚在Floodlight-dev Google小组中找到了一个相关的主题。
因此,这可能是Floodlight REST API的问题,该API要求消息主体用于DELETE请求以标识要删除的内容,而AHC仅符合RFC2616。
我将关注Google小组的主题,并在开发人员中探讨它的结局。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.