Files
MCCustomSkinLoader/Common/customskinloader/utils/HttpUtil0.java
T
xfl03 5c12463c94 Revision 14
Local skin supported
Local profile cache supported
Better profile cache
Swifter official profile loading
Better skull loading
Fix legacy loading bug
Fix bug while using ClassTransformer
2016-07-31 22:00:46 +08:00

84 lines
2.8 KiB
Java

package customskinloader.utils;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import org.apache.commons.io.Charsets;
import org.apache.commons.io.IOUtils;
import customskinloader.CustomSkinLoader;
public class HttpUtil0 {
/**
* Read all text from http.
* @since 13.11
*/
public static String readHttp(String url,String userAgent){
HttpURLConnection c=null;
try {
CustomSkinLoader.logger.info("Try to read '"+url+(userAgent==null?" without user agent.":"' with user agent '"+userAgent+"'."));
c=createConnection(url,userAgent);
int res = c.getResponseCode()/100;
if (res==4||res==5||c.getResponseCode()==HttpURLConnection.HTTP_NO_CONTENT) {
CustomSkinLoader.logger.info("Failed to read (Response Code: "+c.getResponseCode()+")");
return null;
}
CustomSkinLoader.logger.info("Successfully read (Response Code: "+c.getResponseCode()+" , Content Length: "+c.getContentLength()+")");
InputStream is = c.getInputStream();
return IOUtils.toString(is, Charsets.UTF_8);
} catch (Exception e) {
CustomSkinLoader.logger.info("Failed to read (Exception: "+e.getMessage()+")");
return null;
} finally {
if(c!=null)
c.disconnect();
}
}
/**
* Get faked url after redirect.
* Using this method, can also check if it is exist.
* @param url - before redirect
* @return url - faked after redirect (null for not exist)
* @since 14.1
*/
public static String getFakeUrl(String url,String userAgent){
HttpURLConnection c=null;
try {
CustomSkinLoader.logger.info("Try to get fake url of '"+url+"' with user agent '"+userAgent+"'.");
c=createConnection(url,userAgent);
int res = c.getResponseCode()/100;
if (res==4||res==5) {
CustomSkinLoader.logger.info("Failed to get fake url (Response Code: "+c.getResponseCode()+")");
return null;
}
String url1=c.getURL().toString();
CustomSkinLoader.logger.info("Successfully get fake url ("
+ "Response Code: "+c.getResponseCode()+" , "
+ "Content Length: "+c.getContentLength()+" , "
+ "Real URL: "+url1+")");
return HttpTextureUtil.getLegacyFakeUrl(url1, HttpTextureUtil.getHash(url1, c.getContentLength(), c.getLastModified()));
} catch (Exception e) {
CustomSkinLoader.logger.info("Failed to get fake url (Exception: "+e.getMessage()+")");
return null;
} finally{
if(c!=null)
c.disconnect();
}
}
private static HttpURLConnection createConnection(String url,String userAgent) throws MalformedURLException, IOException{
HttpURLConnection c = (HttpURLConnection) (new URL(url)).openConnection();
c.setReadTimeout(1000 * 10);
c.setConnectTimeout(1000 * 10);
if(userAgent!=null)
c.setRequestProperty("User-Agent",userAgent);
c.setUseCaches(false);
c.setInstanceFollowRedirects(true);
c.connect();
return c;
}
}