我正在运行带有一些虚拟主机的Tomcat服务器,我需要将一些数据从另一台服务器上的另一个servlet发送到此服务器上的servlet.因为我要POST的服务器使用虚拟主机只是通过它的IP地址引用这个主机会导致问题(它不知道我正在尝试与哪个虚拟主机通信).
以下是我运行HTTP 1.0 POST到"sub.example.com"的代码,但在此示例中,"example.com"只知道将请求路由到右子域(如果将其配置为默认值).这是因为要求Socket传递InetAddress而不是主机名.
String host = "sub.example.com";
int port = 80;
String path = "/Servlet";
StringBuilder data = new StringBuilder();
data.append(URLEncoder.encode("NameA", "UTF-8")).append('=').append(URLEncoder.encode("ValueA", "UTF-8"));
data.append('&').append(URLEncoder.encode("NameB", "UTF-8")).append('=').append(URLEncoder.encode("NameB", "UTF-8"));
InetAddress addr = InetAddress.getByName(host);
Socket socket = new Socket(addr, port);
BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), "UTF8"));
wr.write("POST "+path+" HTTP/1.0\r\n");
wr.write("Content-Length: "+data.length()+"\r\n");
wr.write("Content-Type: application/x-www-form-urlencoded\r\n");
wr.write("\r\n");
// Send data
wr.write(data.toString());
wr.flush();
wr.close();
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
| 归档时间: |
|
| 查看次数: |
3308 次 |
| 最近记录: |