Java中的物联网模块GET请求

Java中的物联网模块GET请求,java,json,rest,get,Java,Json,Rest,Get,我试图从运行在IoT模块(Advantech WISE-4012)上的RESTful Web服务器读取JSON响应。根据文件规定,任何GET请求都应以这种形式提出 GET /ai_value/slot_0/ch_0 无论如何,GET请求的任何Java实现(Java库、Apache等)都会在请求末尾附加协议签名HTTP/1.1。例如: GET http://192.168.0.14/ai_value/slot_0/ch_0 HTTP/1.1 因此(可能)到目前为止,我尝试的每个客户端都会出现错

我试图从运行在IoT模块(Advantech WISE-4012)上的RESTful Web服务器读取JSON响应。根据文件规定,任何GET请求都应以这种形式提出

GET /ai_value/slot_0/ch_0
无论如何,GET请求的任何Java实现(Java库、Apache等)都会在请求末尾附加协议签名HTTP/1.1。例如:

GET http://192.168.0.14/ai_value/slot_0/ch_0 HTTP/1.1
因此(可能)到目前为止,我尝试的每个客户端都会出现错误400(错误请求)。我发现的唯一有效方法是通过谷歌浏览器上的地址栏发送一个简单的请求(有时我会收到响应,有时也会收到错误的请求)如何编写GET请求的java实现,如文档所述,简单明了?如何在没有HTTP/1.1的情况下测试自定义GET请求?我尝试的每个chrome扩展(高级REST客户端、Postman)都会在最后添加协议版本,因此我没有机会验证这是否是我收到错误请求的原因

编辑:

这是来自高级REST客户端的响应头

Connection: close
Content-Type: application/json
Server: WISE-4000/8.1.0020
而源消息是以下消息:

GET /ai_value/slot_0/ch_0 HTTP/1.1
HOST: 192.168.0.14
文档之间唯一不匹配的是前面提到的HTTP/1.1签名。添加“accept:application/json”也没什么区别,检查是否有帮助

HttpClient httpClient = HttpClients.createDefault();
URI reqUri = new URI(<uri>);
RequestBuilder requestBuilder = RequestBuilder.create("GET");
requestBuilder.setUri(reqUri);
requestBuilder.setHeader(<headerKey>, <headerValue>);
requestBuilder.setEntity(<entity_data>);
HttpUriRequest httpRequest = requestBuilder.build();
httpResponse = httpClient.execute(httpRequest);
HttpClient-HttpClient=HttpClients.createDefault();
URI reqUri=新URI();
RequestBuilder RequestBuilder=RequestBuilder.create(“GET”);
setUri(reqUri);
setHeader(,);
setEntity();
HttpUriRequest httpRequest=requestBuilder.build();
httpResponse=httpClient.execute(httpRequest);

仔细阅读文档后,默认超时(即720秒)似乎是导致问题的超时。似乎没有任何方法可以解决这个问题(理想情况下,系统应该在成功请求后重置时间,我们应该在720秒不活动后只获得400或403)

我想向WISE-4012的API开发人员推荐两点(如果他们与您联系):

  • 添加有关身份验证和超时的简要文档(每个错误响应可能包含更多响应代码和错误消息)
  • 为API访问启用OAuth

就目前的实现而言,我想您需要对每个请求进行基本身份验证并传递用户名/密码,或者在每个API请求中添加身份验证标头,以便在没有任何
400
s的情况下获得成功响应。

检查响应标头和/或正文,查看是否有任何错误消息?@DarshanMehta我在帖子中添加了响应和源消息。谢谢你,你也可以从命令行尝试使用
curl
吗?@DarshanMehta我在windows环境下,但我会想办法做类似的事情。有什么建议吗?你能给我指一下这个API的文档吗?不幸的是,当我试图打印这个HTTP请求的结果时,我得到了这种响应
HttpResponseProxy{HTTP/1.0 400错误请求[Server:WISE-4000/8.1.0020,Connection:close,Content-type:application/json]ResponseEntityProxy{[Content-type:application/json,Chunked:false]}
在我的java软件上也解决了这个问题。你能详细说明一下吗?您是如何为默认用户和密码构造身份验证令牌的?谢谢