2017-03-21 10 views
2

私はPOSTフォームリクエストを作っていたコードを次のようしています。要求本体には、ユーザー名とパスワードが含まれています。パスワードに@文字が含まれています。これはRestTemplateが%40で置き換えられました。パスワードが間違っているため、「許可されていません」というエラーが表示されます。続き はここbufferOutput(リクエストボディ)POSTリクエストを行うときにSpring RestTemplateでフォームの本体文字をエスケープしない方法は?

merchant_id=firstname+de-lastname%40gmail.com&password=%40Password 

からデバッグ情報が呼び出しを行っているコードスニペットです。

MultiValueMap<String, String> formData = new LinkedMultiValueMap<String, String>(); 
String url = "SOME_URL"; 
formData.add("username", "[email protected]"); 
formData.add("password", "@name321"); 

HttpHeaders headers = new HttpHeaders(); 
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); 
HttpEntity<MultiValueMap<String,String>> requestEntity = new HttpEntity<MultiValueMap<String,String>>(formData,headers); 

RestTemplate restTemplate = new RestTemplate(); 
     restTemplate.getMessageConverters() 
       .add(0, new StringHttpMessageConverter(Charset.forName("UTF-8"))); 
     restTemplate.exchange(url, HttpMethod.POST, requestEntity, Authentication.class,"321"); 

質問は、身体データをエスケープしないrestTemplateを伝えるためにどのようにでしょうか?リクエストがPOSTフォームリクエストである必要があり、私は問題を解決するためにUriComponentsBuilderを使用できないこと 注意。

+0

どこ残りのテンプレートの呼び出しがありますか? – Coder

+0

が不足しているコール – amjad

+0

を追加するには、URLがエンコードされています? – Coder

答えて

関連する問題