我试图创建一个GET请求来检索来自拉丁美洲的商业航班。但我只能通过失眠/ Postman 得到答案...
我通过Java中的RestTemplate发出请求,如下所示:
public class LatamRequest {
public void consumerAPILatam(){
RestTemplate template = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
//h.ttps://www.latamairlines.com/bff/air-offers/offers/search
UriComponents uri = UriComponentsBuilder.newInstance()
.scheme("https")
.host("www.latamairlines.com")
.path("bff/air-offers/offers/search")
.queryParam("sort","RECOMMENDED")
.queryParam("cabinType","Economy")
.queryParam("origin","GRU")
.queryParam("destination","BSB")
.queryParam("inFlightDate","null")
.queryParam("inFrom","null")
.queryParam("inOfferId","null")
.queryParam("outFlightDate","null")
.queryParam("outFrom","2022-11-15T15%3A00%3A00.000Z")
.queryParam("outOfferId","null")
.queryParam("adult","1")
.queryParam("child","0")
.queryParam("infant","0")
.queryParam("redemption","true")
.build();
headers.set("User-Agent", "test");
headers.set("Accept", "*/*");
headers.set("Content-Type", "application/json");
headers.set("X-latam-App-Session-Id", "84196897-1687-4d8c-8e63-083091ac204f");
headers.set("X-latam-Action-Name", "search-result.flightselection.offers-search");
headers.set("X-latam-Application-Name", "web-air-offers");
headers.set("X-latam-Client-Name", "web-air-offers");
headers.set("X-latam-Track-Id", "3a4ae189-e218-4606-bd9e-8b17efc93463");
headers.set("X-latam-Request-Id", "ff44ef24-e6d0-4cb0-984c-df1db18cee19");
headers.set("X-latam-Application-Country", "BR");
headers.set("X-latam-Application-Oc", "br");
headers.set("X-latam-Application-Lang", "pt");
HttpEntity<String> httpEntity = new HttpEntity<>(headers);
ResponseEntity<String> response = template.exchange(uri.toUriString(), HttpMethod.GET, httpEntity, String.class); //todo: No response, no error...
System.out.println(response);
}
}
执行上述程序块后,我没有得到任何响应或状态。OBS:使用相同的参数和标题,我在 Postman 或失眠症中得到状态200。
我尝试了几种方法,但都没有得到回应。有人有更有效的调试方法吗?
1条答案
按热度按时间yi0zb3m41#
你没有得到任何响应和异常的原因是因为服务器端得到了你的请求,并一直保持它,没有响应。所以你仍然在等待模式。我运行你的请求从java代码使用不同的http客户端,但使用确切的参数,我注意到,响应从来没有返回。我等了10多分钟,我看到程序仍然在运行。所以我修改了代码,添加了5秒的连接超时和30秒的读取超时。当我运行它的时候,我在30秒后得到了读取超时异常。所以代码设法连接到服务器端,但是服务器端没有响应。所以你在无休止的等待中。所以,我不知道为什么它能在postman上工作。可能是一些头值问题。