从另一个 servlet 调用 servlet

发布于 2024-07-21 15:43:39 字数 448 浏览 12 评论 0原文

我有两个 servlet,它们运行在不同的 tomcat 服务器上。

我尝试通过以下方式从 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? 我不知道我错过了什么。

I have two servlets which are running on different tomcat servers.

I and trying to call a servlet1 from servlet2 in the following way and wanted to write an object to output stream.

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();

The problem is that i am unable to hit the servlet? I cannot figure out what i am missing.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

谎言月老 2024-07-28 15:43:39

您必须先通过 url.connect() 创建连接,然后才能读取/发送数据。 这是违反直觉的,因为名称 openConnection() 表明它已经这样做了,但文档说:

一般来说,创建 URL 连接是一个多步骤的过程:

  1. openConnection()
  2. 操纵影响远程资源连接的参数。
  3. 连接()
  4. 与资源互动; 查询标头字段和内容。

这就是 getExpiration() 让它发挥作用的原因:它为您调用 connect()

You must create a connection via url.connect() before you can read/send data. This is counter-intuitive since the name openConnection() suggests that it does that already but the docs say:

In general, creating a connection to a URL is a multistep process:

  1. openConnection()
  2. Manipulate parameters that affect the connection to the remote resource.
  3. connect()
  4. Interact with the resource; query header fields and contents.

This is why getExpiration() makes it work: It calls connect() for you.

女皇必胜 2024-07-28 15:43:39

您遇到的错误是什么? 检查地址是否正确。 如果远程服务器在 80 以外的端口上运行,则在构建 URL 时要考虑到这一点。

我还可以建议使用 HttpClient 而不是 URLConnection 。

What is the error you are getting? Check that the address is correct. If the remote server is running in a port other than 80, then take this into consideration when building the URL.

May also I suggest to use HttpClient instead of URLConnection.

别低头,皇冠会掉 2024-07-28 15:43:39

我无法理解,但它通过在代码中添加以下行来起作用。

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();

I cannot unnderstand but it worked by adding the following line in the code.

con.getExpiration();

like this

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();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文