我有两个在不同的tomcat服务器上运行的servlet。
我尝试以下列方式从servlet2调用servlet1,并希望将一个对象写入输出流。
URL url=new URL("http://msyserver/abc/servlet1");
URLConnection con=url.openConnection();
con.setDoOutput(true);
con.setDoInput(true);
OutputStream os=con.getOutputStream();
ObjectOutputStream oos=new ObjectOutputStream(os);
oos.writeObject(pushEmailDTO);
oos.flush();
oos.close();
问题是我无法点击servlet?我无法弄清楚我错过了什么。
答案 0 :(得分:6)
您必须先通过url.connect()
创建连接,然后才能读取/发送数据。这是违反直觉的,因为名称openConnection()
表明它已经存在,但文档说:
通常,创建与URL的连接是一个多步骤过程:
openConnection()
- 操纵影响与远程资源的连接的参数。
- 连接()
- 与资源互动;查询标题字段和内容。
醇>
这就是getExpiration()
使其有效的原因:它为您调用connect()
。
答案 1 :(得分:1)
你得到的错误是什么?检查地址是否正确。如果远程服务器在80以外的端口中运行,则在构建URL时请考虑这一点。
我还建议使用HttpClient代替URLConnection。
答案 2 :(得分:1)
我无法理解,但它通过在代码中添加以下行来实现。
con.getExpiration();
像这样
URL url=new URL("http://msyserver/abc/servlet1");
URLConnection con=url.openConnection();
con.setDoOutput(true);
con.setDoInput(true);
con.getExpiration();//<----------
OutputStream os=con.getOutputStream();
ObjectOutputStream oos=new ObjectOutputStream(os);
oos.writeObject(pushEmailDTO);
oos.flush();
oos.close();