我遇到了将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响应。我不知道我哪里错了。任何帮助,将不胜感激。谢谢。
答案 0 :(得分:0)
您的注释行看起来比XML绑定更好。
尝试将其修改为
String basicAuth = "Basic " + new String(Base64.encodeBase64(userpass.getBytes()));
同样在将来,使用“-v”运行curl命令以查看它正在进行的请求标头。然后,您可以检查其中的Authorization标头,并将其与您在Java代码中生成的标头进行比较。
答案 1 :(得分:0)
我可以看到你的curl命令有-d ''
参数。这意味着http POST请求。
但是你的java代码正在向服务器发出GET
请求。因此,请更改您的Java代码,以便它执行POST
请求。它会解决你的问题。