0

我有一个端点需要一个“authenticity_token”,其格式如下:

Iq2rNXN+OxERv+s6TSloJfKkPZVvqnWe1m0NfODB5OI=

但是,有时它具有“特殊”字符,例如:

E7IzeP73OgPGgXM/up295ky1mMQMio2Nb8HMLxJFyfw=

这被编码为:

E7IzeP73OgPGgXM%26%2347%3Bup295ky1mMQMio2Nb8HMLxJFyfw%3D

出于某种原因,端点不喜欢那些特殊字符的编码,会认为令牌无效。是否可以添加不编码特定值的 POST 变量?我目前正在做类似的事情:

    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));
4

1 回答 1

2

您始终可以使用ByteArrayEntityorStringEntity代替UrlEncodedFormEntity并自己进行编码。它应该看起来像foo=var1&bar=var2.
您必须设置Content-Type=application/x-www-form-urlencoded
您可能想要找出您的端点期望作为application/x-www-form-urlencodedContent-Type 标头值的字符集参数。然后将其作为参数传递给UrlEncodedFormEntity构造函数。这应该是正确的解决方法。

于 2013-02-15T00:08:59.407 回答