0

我的客户端没有实现 HttpServlet 接口。它连接到远程运行的 HttpServlet

 url = new URL("http://tomcat-location:8180/myContext");

这就是它用来向 servlet 发送消息的方法。但它怎么能得到回应呢?当我尝试从这个位置读取时,我正在读取指定页面的内容。也许我的整个方法是错误的,这不是客户端和 servlet 应该如何相互交谈的方式?我怎样才能让他们用简单的方式说话?似乎使用 URL,他们通过在该页面上发布和阅读来进行交流。有没有其他方法可以让他们不用在页面上写字就可以说话?谢谢

4

1 回答 1

0

试试这个:

public static String getURLData( String url ) {

    // creates a StringBuilder to store the data
    StringBuilder out = new StringBuilder();

    try {

        // creating the URL
        URL u = new URL( url );

        // openning a connection
        URLConnection uCon = u.openConnection();

        // getting the connection's input stream
        InputStream in = uCon.getInputStream();

        // a buffer to store the data
        byte[] buffer = new byte[2048];


        // try to insert data in the buffer until there is data to be read
        while ( in.read( buffer ) != -1 ) {

            // storing data...
            out.append( new String( buffer ) );

        }

        // closing the input stream
        in.close();            

        // exceptions...  
    } catch ( MalformedURLException exc )  {

        exc.printStackTrace();

    } catch ( IOException exc ) {

        exc.printStackTrace();

    } catch ( SecurityException exc ) {

        exc.printStackTrace();

    } catch ( IllegalArgumentException exc ) {

        exc.printStackTrace();

    } catch ( UnsupportedOperationException exc ) {

        exc.printStackTrace();

    }

    // returning data
    return out.toString();

}

如果您需要使用代理,则需要做更多的工作,因为您需要进行身份验证。在这里您可以阅读有关它的内容:如何使 HttpURLConnection 使用代理?

如果你想要一个像浏览器一样工作的客户端,你可以试试Apache HttpComponentes的 HttpClient

现在,如果您需要服务器通知客户端的行为,那么您将需要使用其他方法,例如创建自己的服务器和使用套接字。如果您使用常规浏览器,则可以使用 websockets,但似乎不是您的情况。

于 2012-08-17T03:49:09.573 回答