将curl命令转换为Java时的php响应403
我在将curl命令转换为Java时遇到了一个问题。下面是我的卷发
curl https://api.XXXX.com/authorizations \
-u john:doe -d '' \
-H 'Accept: application/vnd.drivr.v2+json' \
-H 'Content-type: application/json'
我已经用这种方式尝试了Java的等价物
String stringUrl = "https://api.XXXX.com/authorizations";
URL url = new URL(stringUrl);
URLConnection uc = url.openConnection();
String userpass = "john" + ":" + "doe";
//String basicAuth = "Basic " + new String(new Base64().encode(userpass.getBytes()));
String basicAuth = "Basic " + javax.xml.bind.DatatypeConverter.printBase64Binary(userpass.getBytes("UTF-8"));
uc.setRequestProperty("Authorization", basicAuth);
uc.setRequestProperty("Accept", "application/vnd.drivr.v2+json");
uc.setRequestProperty("Content-type", "application/json");
System.out.println("url is: "+uc.getURL().toString()+" "+basicAuth);
InputStream inputStreamReader = uc.getInputStream();
这已经是连续两天了。它总是给我403的回复。我不知道我哪里做错了。任何帮助都将不胜感激。谢谢
# 1 楼答案
你的注释行看起来比XML绑定好得多
尝试将其修改为
同样在将来,使用“-v”运行curl命令以查看它发出的请求头。然后可以检查其中的授权头,并将其与Java代码中生成的授权头进行比较
# 2 楼答案
我可以看到您的curl命令有
-d ''
参数。这意味着http POST请求但是java代码正在对服务器执行
GET
请求。因此,更改java代码,使其执行POST
请求。它会解决你的问题