2016-07-25 17 views
1

春休みテンプレートを使用してJSONオブジェクトを投稿しています。それは少ないデータに対してうまく動作しますが、より多くのデータをポストすると、Request URIが長すぎます。Spring RESTテンプレートを使用したPOST JSONオブジェクト

 final String url = getServiceUrl() + "/rs/doc?param1=test"; 

     RestTemplate restTemp=getRestTemplate(); 

     HttpHeaders headers = new HttpHeaders(); 
     headers.setContentType(org.springframework.http.MediaType.APPLICATION_JSON); 

     //set your entity to send 
     HttpEntity<MyBean> request = new HttpEntity<MyBean>(myBean,headers); 

     List<HttpMessageConverter<?>> messageConverters = new ArrayList<HttpMessageConverter<?>>(); 
     messageConverters.add(new MappingJacksonHttpMessageConverter()); 
     messageConverters.add(new FormHttpMessageConverter()); 
     restTemp.getMessageConverters().addAll(messageConverters); 

     // send it! 
     responseEntity = restTemp.exchange(url, HttpMethod.POST, request, String.class); 

リクエストボディは、POSTメソッドで無制限のデータを受け入れる必要があります。しかし、ここではうまくいかないようです。誰かが案内してくれますか?

答えて

1

私がテスト用に作成した方法は、Springを通じて利用可能なpostForEntityメソッドを使用することでした。 ResponseEntityにマップ(ResponseEntity<Map>)を受け入れるように設定し、String.classの代わりにMap.classを使用しました。これにより、JSONデータを入力するときにキー値のペアを使用できます(HashMapを使用できます)。これにより、HttpEntityをMapとタイプする必要があるかもしれませんが、あなたが設定したMyBeanクラスを受け入れるようにマップを設定することができます。お役に立てれば!

1

以下は私にとってうまくいきます。私は、送信する必要があるヘッダとポストパラメータにセキュリティの詳細を追加しました。

RestTemplate restTemplate = new RestTemplate(); 
HttpHeaders headers = new HttpHeaders(); 
headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON)); 
headers.set(ApplicationConstants.API_KEY, ApplicationConstants.TEST_API_KEY_VALUE); 
headers.set(ApplicationConstants.AUTH_TOKEN, ApplicationConstants.TEST_API_TOKEN_VALUE); 
MultiValueMap<String, String> postParameters = new LinkedMultiValueMap<String, String>(); 
postParameters.add("purpose", cust.getPaymentPurpose()); 
postParameters.add("buyer_name", cust.getCustomerName()); 
postParameters.add("email", cust.getCustomerEmailId()); 
postParameters.add("phone", cust.getCustomerMobNum()); 
postParameters.add("send_email", "False"); 
postParameters.add("send_sms", "False"); 
HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<MultiValueMap<String, String>>(postParameters, headers); 
ResponseEntity<String> result = restTemplate.exchange("YOUR URL", HttpMethod.POST, requestEntity, String.class); 
OnlinePaymentModel paymentModel = gson.fromJson(result.getBody(), OnlinePaymentModel.class); 
関連する問題