Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么';对百分号进行编码?_Java_Okhttp_Url Encoding - Fatal编程技术网

Java 为什么';对百分号进行编码?

Java 为什么';对百分号进行编码?,java,okhttp,url-encoding,Java,Okhttp,Url Encoding,发件人: 这里的一个副作用是,当我们发布一个登录表单(用户名和密码)时,如果密码包含“%”(百分号),那么它不会被编码,用户无法登录。为什么这个字符不是由OkHttp编码的 以下是我们创建表单的方式(映射包含两个字符串,用户名和密码),以供参考: public RequestBody createEncodedFormBody(最终地图内容){ final FormBody.Builder=new FormBody.Builder(); for(最终条目contentEntry:content.

发件人:

这里的一个副作用是,当我们发布一个登录表单(用户名和密码)时,如果密码包含“%”(百分号),那么它不会被编码,用户无法登录。为什么这个字符不是由OkHttp编码的

以下是我们创建表单的方式(映射包含两个字符串,用户名和密码),以供参考:

public RequestBody createEncodedFormBody(最终地图内容){
final FormBody.Builder=new FormBody.Builder();
for(最终条目contentEntry:content.entrySet()){
addEncoded(contentEntry.getKey(),contentEntry.getValue());
}
返回builder.build();
}

使用
FormBody.Builder.add()
而不是
addEncoded()
。编码的方法假定您已经对输入进行了编码。

@EricKerwin这里有一个相同的东西:)我反向理解了它
static final String FORM_ENCODE_SET = " \"':;<=>@[]^`{}|/\\?#&!$(),~";
public Builder addEncoded(String name, String value) {
      names.add(HttpUrl.canonicalize(name, FORM_ENCODE_SET, true, false, true, true, charset));
      values.add(HttpUrl.canonicalize(value, FORM_ENCODE_SET, true, false, true, true, charset));
      return this;
    }
public RequestBody createEncodedFormBody(final Map<String, String> content) {
        final FormBody.Builder builder = new FormBody.Builder();
        for (final Entry<String, String> contentEntry : content.entrySet()) {
            builder.addEncoded(contentEntry.getKey(), contentEntry.getValue());
        }
        return builder.build();
    }