Java代理模式:使用代理类灵活处理HTTP请求
以下是一个简单的示例代码,演示了如何使用Java代理模式来实现灵活的HTTP请求处理。
类A:
public class A {
public static void main(String[] args) {
Proxy proxy = new Proxy();
String result = proxy.getData('B', 'http://example.com');
System.out.println(result);
}
}
代理类Proxy:
public class Proxy {
private B b = new B();
private C c = new C();
public String getData(String type, String url) {
if ('B'.equals(type)) {
return b.getData(url);
} else if ('C'.equals(type)) {
return c.getData(url);
} else {
throw new IllegalArgumentException("Invalid type: " + type);
}
}
}
类B:
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
public class B {
public String getData(String url) {
try {
HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
conn.setRequestMethod("GET");
conn.connect();
InputStream in = conn.getInputStream();
Scanner scanner = new Scanner(in);
String result = scanner.useDelimiter("\A").next();
scanner.close();
in.close();
return result;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
}
类C:
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
public class C {
public String getData(String url) {
try {
HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("User-Agent", "Mozilla/5.0");
conn.connect();
InputStream in = conn.getInputStream();
Scanner scanner = new Scanner(in);
String result = scanner.useDelimiter("\A").next();
scanner.close();
in.close();
return result;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
}
在这个示例中,类B和类C都实现了获取http请求数据的方法,但是它们的请求头不同。代理类Proxy根据参数type的不同选择调用哪个类的方法,并将获取到的数据返回给类A。
原文地址: https://www.cveoy.top/t/topic/oCkp 著作权归作者所有。请勿转载和采集!