Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.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 具有基本身份验证长密码的httpurlconnection_Java_Paypal - Fatal编程技术网

Java 具有基本身份验证长密码的httpurlconnection

Java 具有基本身份验证长密码的httpurlconnection,java,paypal,Java,Paypal,当我们有很长的密码时,我们遇到了HttpURLConnection+基本身份验证的问题 以下是示例代码: URL url = new URL("http://localhost/data.json"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod(method); String authString = clientId + ":" + clientSecre

当我们有很长的密码时,我们遇到了HttpURLConnection+基本身份验证的问题

以下是示例代码:

URL url = new URL("http://localhost/data.json");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();

conn.setRequestMethod(method);

String authString = clientId + ":" + clientSecret;
BASE64Encoder encoder = new BASE64Encoder();


String authHeader = encoder.encode(authString.getBytes()); 
conn.setRequestProperty("Authorization", authHeader);
conn.setRequestProperty("Accept", "application/json");
我们试图使用

     String authString = clientId + ":" + clientSecret;
authString = "" + javax.xml.bind.DatatypeConverter.printBase64Binary(authString.getBytes());
但这件事运气不好

HttpURLConnection带有基本身份验证,具有一定长度的密码剑,工作正常,但密码过长,我们遇到了问题。返回的错误代码是400

注意:这与使用Paypal集成登录有关

我们的示例代码(由贝宝提供)也不起作用

提前谢谢你。

试试一篇帖子

如果您使用本地服务器进行测试,请确保它在最大URL大小、最大参数长度、最大POST头大小等方面没有任何限制。请检查服务器端日志


这可能不是问题所在,但此语句“authString.getBytes()”中可能存在错误。您正在根据系统默认编码将字符串转换为字节,这取决于JVM/OS/Locale——您应该将显式编码传递给getBytes()

您应该检查成功的身份验证,即使用具有请求检查器(即chrome)的web浏览器或仅使用wireshark

因此,您可以查看发送到服务器的请求消息的类型

从这一点开始,您可以检查您的代码是否提供了相同类型的请求,如果它们不相同,您至少可以找到问题所在

尽管基本认证长度没有规范强制限制,但仍存在一些与平台相关的限制,如下所述:


希望你觉得它有用。

我面临的问题是用户名、密码太长

如果我使用下面的代码,它可以正常工作

    byte[] encodedBytes = org.apache.commons.codec.binary.Base64.encodeBase64(passwordString.getBytes("UTF-8"));
    String encodedString = new String(encoded, "UTF-8");


headers.put(“授权”、“基本”+编码字符串)

响应是否包含状态代码400以外的任何内容?通常,错误响应的主体将包含一条消息,提供有关错误的更多详细信息。