java.io.IOException: Server returned HTTP response code: 401 for URL:
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source)
at Authenticate.authenticateUrl(Authenticate.java:62)
at Authenticate.main(Authenticate.java:84)
这是因为请求需要权限验证的原因,可以通过下面的方式解决
public static JSONObject requestGet(String urlstr,JSONObject body){
JSONObject result=null;
try{
URL url=new URL(urlstr);
URLConnection conn=url.openConnection();
HttpURLConnection httpUrlConnection = (HttpURLConnection)conn;
httpUrlConnection.setRequestMethod("GET");
httpUrlConnection.setRequestProperty("accept", "application/json");
httpUrlConnection.setRequestProperty("content-type", "application/json");
String encoding = Base64.encode("username:password".getBytes("UTF-8"));
httpUrlConnection.setRequestProperty("Authorization", String.format("Basic %s", encoding));
httpUrlConnection.setDoInput(true);
if(body!=null){
httpUrlConnection.setDoOutput(true);
OutputStream os=httpUrlConnection.getOutputStream();
IOUtils.write(body.toString(), os, "utf-8");
os.flush();
}
BufferedReader in = new BufferedReader(new InputStreamReader( httpUrlConnection.getInputStream(),"utf-8"));
String str="";
String inputLine;
while ((inputLine = in.readLine()) != null) {
str+=inputLine;
}
in.close();
System.out.println("str:"+str);
result=new JSONObject(str);
}catch(Exception e){
e.printStackTrace();
}
return result;
}