AMcoder - javascript, python, java, html, php, sql

RestTemplate postForObject պատասխանը կրճատվում է

Փորձում ենք ստանալ պատասխանը գարնանային վեբ հաճախորդի միջոցով, բայց արդյունքի պատասխանը կրճատվում է, քանի որ պատասխանի չափն ավելին է, քան լարային դասի չափը: Արդյո՞ք որևէ այլ տարբերակ կա պատասխան ստանալու առանց կրճատվելու:

LinkedMultiValueMap<String, Object> requestMap = new LinkedMultiValueMap<String, Object>();
        //String response = "";
        try{
            File tempFile = File.createTempFile("ccda", "File");
            FileOutputStream out = new FileOutputStream(tempFile);
            IOUtils.copy(ccdaFile.getInputStream(), out);
            requestMap.add("ccdaFile", new FileSystemResource(tempFile));       
            HttpHeaders headers = new HttpHeaders();
            headers.setContentType(MediaType.MULTIPART_FORM_DATA);
            HttpEntity<LinkedMultiValueMap<String, Object>> requestEntity = 
                                        new HttpEntity<LinkedMultiValueMap<String, Object>>(requestMap, headers);
            RestTemplate restTemplate = new RestTemplate();
            FormHttpMessageConverter formConverter = new FormHttpMessageConverter();
            formConverter.setCharset(Charset.forName("UTF8"));
            restTemplate.getMessageConverters().add(formConverter);
            restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());

            String response = restTemplate.postForObject("localhost:8080", 
                                                requestEntity, String.class);

            tempFile.delete();
        }catch(Exception exc)
        {
            exc.printStackTrace();
        }

Պատասխանները:


1

Դուք կարող եք օգտագործել InputStream, որը, կարծում եմ, կարող եք անել այս կերպ.

InputStream is = rt.execute("localhost:8080", HttpMethod.POST, requestCallback, responseExtractor);

Որտեղ requestCallback-ը org.springframework.web.client.RequestCallback-ի իրականացումն է, ինչպես այս մեկը

public class MyRequestCallback implements RequestCallback
{
    @Override
    public void doWithRequest(ClientHttpRequest request) throws IOException
    {
        request.getHeaders().add(HttpHeaders.CONTENT_TYPE, MimeTypeUtils.APPLICATION_JSON_VALUE);
        request.getHeaders().add(HttpHeaders.ACCEPT, MimeTypeUtils.APPLICATION_JSON_VALUE);
    }
}

Մինչև answerExtractor-ը կարող է այս դասի օրինակով

public class MyResponseExtractor implements ResponseExtractor<InputStream>
{
    @Override
    public Boolean extractData(ClientHttpResponse response) throws IOException
    {
        HttpStatus status = response.getStatusCode();
        switch (status)
        {
        case OK:
            return response.getBody();
        default:
            return null;
        }   
    }
}

InputStream-ը ստանալուց հետո դուք կարող եք կառավարել այն Հուսով եմ, որ այն օգտակար է

23.09.2016
  • InputStream-ը չի կարող օգտագործվել jsonMapping-ի համար, և այն բացառություն է անում json քարտեզագրման համար inputStream-ի համար: 23.09.2016
  • @Vishwaksena դուք օգտագործում եք JSON: Այսպիսով, ես ենթադրում եմ, որ դուք կարող եք ուղղակիորեն օգտագործել Օբյեկտը տողի փոխարեն անցնելու փոխարեն; Ես շատ մեծ JSON-ներ էի օգտագործում և երբեք նման խնդիրներ չեմ ունեցել 23.09.2016
  • Ես փորձում եմ օգտագործել պատասխանը, որը վերադարձվում է, և դա JSON է, բայց դա String-ի մեջ մտնելը նշանակում է այն կրճատվել: 23.09.2016
  • կարգավորեք գրանցումը DEBUG մակարդակում (կամ ավելի լավ TRACE) և կրկնեք զանգը, այնուհետև տեղադրեք գրանցամատյանի հաղորդագրությունները այստեղ: գուցե մենք կարողանանք ավելի շատ տեղեկություններ ստանալ 24.09.2016
  • Ես իրականում հարվածում եմ կենդանի ծառայությանը և, հետևաբար, դրա փոխարեն պահում եմ localhost, և ես չկարողացա ստանալ սերվերի տեղեկամատյանները: 24.09.2016
  • Նոր նյութեր

    Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
    JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

    Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
    Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

    Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
    Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

    Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
    Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

    C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
    C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

    Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
    Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..