Tag: resttemplate

JavaFX:如何调用fxml文件并将数据加载到其中

我是JavaFX的新手,我正在开发一个JavafX项目,我希望将数据从网络加载到GridPane 。 我试图弄清楚如何添加我在UI中从网络收到的数据。 我已经创建了一个gridpane,只有在窗格中加载的东西是Name,Image。 我检查了一些资源,但鉴于我对JavaFX的理解有限,不知道在窗格中添加数据需要修改什么。 我有以下代码: public class AccountController { fetchCanvasImagesFromServer.setOnSucceeded(new EventHandler() { @Override public void handle(WorkerStateEvent event) { imageObservableList = FXCollections.observableList(fetchCanvasImagesFromServer.getValue()); for(RestImage image : imageObservableList){ if(!(image == null)) { if (!(image.getCanvasImage() == null)) { try { InputStream in = new ByteArrayInputStream(image.getCanvasImage()); BufferedImage bImageFromConvert = ImageIO.read(in); Image fxImage = SwingFXUtils.toFXImage(bImageFromConvert,null); if(!(fxImage == null)){ System.out.println(“Fx image […]

用spring mvc流式传输大文件

我正在尝试创建一个下载和上传大文件的应用程序,因此我不希望将文件内容存储在内存中。 在mvc控制器端,我正在使用一个转换为/从InputStream转换的http消息转换器 @Override public InputStream read(Class clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException { return inputMessage.getBody(); } @Override public void write(InputStream t, MediaType contentType, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException { try { IOUtils.copy(t, outputMessage.getBody()); } finally { IOUtils.closeQuietly(t); } } 这在服务器端很好用。 在客户端(RestTemplate)方面,我尝试使用相同的转换器,但我得到一个例外,即流已关闭(可能在请求完成时关闭)。 客户端代码: ResponseEntity res = rest.getForEntity(url, InputStream.class); // res.getBody() is closed 我还尝试将输入流复制到缓冲区并创建一个新的ByteArrayInputStream并将其返回到RestTemplate客户端,它运行良好,但它确实需要将数据读入内存,这不符合我的要求。 我的问题是如何保持流打开,直到我处理它而不必将其全部读入内存/文件? 任何想法将不胜感激。 问候,谢伊

无法使用restTemplate发送请求,与postman应用程序中的请求相同

我有来自Postman的http模板: 要使用java代码执行相同的请求,我编写了以下代码: LinkedMultiValueMap map = new LinkedMultiValueMap(); exchange.getIn().getHeader(Exchange.FILE_NAME_ONLY, String.class); map.add(“file”, new File(“filePath”); int lastIndexOfDot = fileName.lastIndexOf(“.”); map.add(“type”, fileName.substring(lastIndexOfDot + 1)); map.add(“org_id”, systemSettingsService.getSystemSettings().getOrganizationId()); map.add(“stone_id”, fileName.substring(0, lastIndexOfDot)); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.MULTIPART_FORM_DATA); HttpEntity<LinkedMultiValueMap> requestEntity = new HttpEntity( map, headers); restTemplate = new RestTemplate(); try { ResponseEntity result = restTemplate.exchange(buildUrl(), HttpMethod.POST, requestEntity, String.class); logger.info(“result {}”, result); } […]

将授权的curl -u post请求与JSON数据转换为RestTemplate等效项

我正在使用github api使用curl命令创建存储库,如下所示,它工作正常。 curl -i -u “username:password” -d ‘{ “name”: “TestSystem”, “auto_init”: true, “private”: true, “gitignore_template”: “nanoc” }’ https://github.host.com/api/v3/orgs/Tester/repos 现在我需要通过HttpClient执行相同的上面的url,我在我的项目中使用RestTemplate 。 我之前使用过RestTemplate ,我知道如何执行简单的url但不知道如何使用RestTemplate将上述JSON数据发布到我的url – RestTemplate restTemplate = new RestTemplate(); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); // Create a multimap to hold the named parameters MultiValueMap parameters = new LinkedMultiValueMap(); parameters.add(“username”, username); parameters.add(“password”, password); // Create the […]

restTemplate用body删除

我正在尝试使用请求正文进行DELETE,但我一直收到400(错误的请求)错误。 当我在招摇/邮递员中这样做时,它成功删除了记录。 但是从Java代码我不能这样做 外部API的设计方式需要正文和URL。 它无法改变。 请告诉我如何删除请求正文的条目 public Person delete(Person person, String url, Map uriVariables) throws JsonProcessingException { RestTemplate restTemplate = new RestTemplate(); CustomObjectMapper mapper = new CustomObjectMapper(); HttpEntity requestEntity = new HttpEntity(person); try { ResponseEntity responseEntity = restTemplate.exchange(url, HttpMethod.DELETE, requestEntity, Person.class, uriVariables); return responseEntity.getBody(); } catch (RestClientException e) { System.out.println(mapper.writeValueAsString(person)); throw e; } } 当它转到exception时,我将以JSON格式获得JSON请求,并且在Swagger […]

如何有效地使用HttpComponentsClientHttpRequestFactory和RestTemplate?

我在我的一个项目中使用RestTemplate及其工厂HttpComponentsClientHttpRequestFactory 。 在这个项目中,我需要对我的服务器进行Http url调用,该服务器运行一个restful服务,它将响应作为JSON字符串返回。 以下是我的代码 – public class GetUserClientData { public String getData(KeyHolder keys) { return new HTTPRequestAccess(keys).makeHttpRequest(); } } 下面是我的包装HttpClient部分的类 – public class HTTPRequestAccess { // should this be static? private RestTemplate restTemplate; private KeyHolder keys; private int timeout; public HTTPRequestAccess(KeyHolder keys){ this(keys.getTimeoutValue()); // setting timeout to RestTemplate this.keys = keys; } public HTTPRequestAccess(int […]

如何在使用具有线程超时function的ExecutorService时提高性能?

我不是multithreading专家,但我发现当前使用ExecutorService代码存在一些性能问题。 我正在开发一个项目,在这个项目中我需要对我的服务器进行HTTP URL调用,如果响应时间过长则会超时。 目前它正在返回简单的JSON字符串.. 我当前的要求是10 ms 。 在10 ms它应该能够从服务器获取数据。 我猜它是可能的,因为它只是对同一数据中心内的服务器的HTTP调用。 我的客户端程序和实际服务器在同一个数据中心内,并且它们之间的ping时间延迟为0.5 ms ,所以它应该是可行的。 我正在使用RestTemplate进行URL调用。 下面是我为我编写的使用ExecutorService和Callables – public class URLTest { private ExecutorService executor = Executors.newFixedThreadPool(10); public String getData() { Future future = executor.submit(new Task()); String response = null; try { System.out.println(“Started..”); response = future.get(100, TimeUnit.MILLISECONDS); System.out.println(“Finished!”); } catch (TimeoutException e) { System.out.println(“Terminated!”); } catch (InterruptedException […]

使用Spring Rest Template时,HttpConnection的默认保持活动时间

我想知道在通过Spring rest Template创建新连接之前,HttpConnection在不活动时保持活动多长时间。 我查看了默认的连接超时和读取超时参数,但我相信这些是在由于某些故障等原因未建立连接时在连接超时的上下文中使用的。 我正在寻找的是,如果没有活动(或)不活动,连接保持多长时间,以及如何通过Spring Rest Template(或)底层机制来配置它。

Resttemplate form / multipart:POST中的图像+ JSON

我正在尝试调用restws(使用resttemplate),它接受一个图像和一些JSON。 但是,我似乎无法让它运行。 相关代码如下: HttpHeaders header = new HttpHeaders(); header.setContentType(MediaType.MULTIPART_FORM_DATA); MultiValueMap map = new LinkedMultiValueMap(); ByteArrayResource bytes = new ByteArrayResource(pictureData) { @Override public String getFilename() { return pictureName; } }; map.add(“x”, x); map.add(“file”, bytes); HttpEntity<MultiValueMap> requestEntity = new HttpEntity(map, header); String response = restTemplate.postForObject(UPLOAD_URL, requestEntity, String.class); 其中x是一些带有所有必需JSON注释的POJO(我从另一个Web服务接收它,那部分工作正常)。 但是,这件事告诉我:HttpMessageNotWritableException:无法写入请求:没有为x找到合适的HttpMessageConverter。 如果我将ByteArrayResource更改为byte [],那么我会收到400 Bad Request。 如果我将内容类型更改为JSON,则无法将ByteArrayResource序列化为JSON: Caused by: org.springframework.http.converter.HttpMessageNotWritableException: […]

使用ReactiveX for Java进行Http调用

我是ReactiveX for Java的新手,我有以下代码块来进行外部http调用,但它不是异步的。 我们使用的是rxjava 1.2和Java 1.8 private ResponseEntity callExternalUrl(String url, String json, HttpMethod method) { RestTemplate restTemplate; HttpEntity request; request = new HttpEntity(jsonContent, httpHeaders); return restTemplate.exchange(url, httpMethod, request, String.class); } 我在网上找到了以下代码块,但我无法理解它以及如何将其应用到我的代码库中。 private RxClient httpClient; public Observable fetchResult(String url, Func1 mapper) { return httpClient.target(url) .request() .rx() .get() .subscribeOn(Schedulers.io()) .map(mapper); }