Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.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.lang.IllegalArgumentException:签名值中4处的意外字符0x1d:_Java_Android_Retrofit2 - Fatal编程技术网

java.lang.IllegalArgumentException:签名值中4处的意外字符0x1d:

java.lang.IllegalArgumentException:签名值中4处的意外字符0x1d:,java,android,retrofit2,Java,Android,Retrofit2,我正在使用改装呼叫我的服务。我的一个服务有一个由SHA256-RSA签名的头参数,但当我调用我的请求时,出现如下错误: java.lang.IllegalArgumentException: Unexpected char 0x1d at 4 in signature value: "|._趿s<�ˠ" 您能帮忙吗?有几个字符可能会导致此错误,例如无法看到的换行符,如本期github中所述: 这是okhttp客户端所禁止的,改造使用它来进行http调用。 我建议您记录小写签名器esul

我正在使用改装呼叫我的服务。我的一个服务有一个由SHA256-RSA签名的头参数,但当我调用我的请求时,出现如下错误:

java.lang.IllegalArgumentException: Unexpected char 0x1d at 4 in signature value: "|._趿s<�ˠ"

您能帮忙吗?

有几个字符可能会导致此错误,例如无法看到的换行符,如本期github中所述:

这是okhttp客户端所禁止的,改造使用它来进行http调用。 我建议您记录小写签名器esult,并直接检查是哪个字符导致了问题

祝你好运

Call<ResponseBody> getToken(@Header("Signature") String Signature,@Header("signature") String signature,@Header("headers") String headers, @Field("username") String username, @Field("password") String password, @Field("grant_type") String grantType);
 String pkcs8Pem = pkcs8Lines.toString();
        pkcs8Pem = pkcs8Pem.replace("-----BEGIN PRIVATE KEY-----", "");
        pkcs8Pem = pkcs8Pem.replace("-----END PRIVATE KEY-----", "");
        pkcs8Pem = pkcs8Pem.replaceAll("\\s+", "");

        // Base64 decode the result

        byte[] pkcs8EncodedBytes = Base64.decode(pkcs8Pem, Base64.DEFAULT);

        // extract the private key

        PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(pkcs8EncodedBytes);
        KeyFactory kf = KeyFactory.getInstance("RSA");
        PrivateKey privKey = kf.generatePrivate(keySpec);

        Cipher cipher = Cipher.getInstance("RSA");
        cipher.init(Cipher.ENCRYPT_MODE, privKey);
        Signature signature = Signature.getInstance("SHA256withRSA");
        signature.initSign(privKey);
        signature.update(message.getBytes());
        return signature.sign();