을 인코딩하지 않는 I가 필요로하는 엔드 포인트 같은 형식입니다 'authenticity_token'자바 아파치 HttpClient를가 POST 엔티티
그러나Iq2rNXN+OxERv+s6TSloJfKkPZVvqnWe1m0NfODB5OI=
, 때로는이 같은 "특별한"문자 :
E7IzeP73OgPGgXM/up295ky1mMQMio2Nb8HMLxJFyfw=
이 가에 인코딩됩니다 : 어떤 이유로
E7IzeP73OgPGgXM%26%2347%3Bup295ky1mMQMio2Nb8HMLxJFyfw%3D
, 엔드 포인트는 인코딩 O를 좋아하지 않는다 이 특수 문자는 토큰이 유효하지 않다고 생각합니다. 특정 값을 인코딩하지 않는 POST 변수를 추가 할 수 있습니까? 당신은 항상 ByteArrayEntity
또는 StringEntity
대신 UrlEncodedFormEntity
의 사용 인코딩을 직접 할 수
HttpPost post = new HttpPost(URL + NEW_FINDING);
List <NameValuePair> nvps = new ArrayList <NameValuePair>();
nvps.add(new BasicNameValuePair("foo", foo));
nvps.add(new BasicNameValuePair("authenticity_token", authenticityToken));
post.setEntity(new UrlEncodedFormEntity(nvps));
문제는 ID가 나머지 매개 변수에 대해 UrlEncodedFormEntity를 사용하는 것과 같습니다. 단지 authenticity_token을 인코딩 할 필요가 있습니다. – wuntee
다음 첫 번째 옵션을 사용하십시오. ByteArrayEntity 또는 StringEntity with Content-Type = application/x-www-form-urlencoded. UrlEncodedFormEntity는 정확히 이것을 수행하지만 매개 변수를 인코딩합니다. – jdb