我的客户端没有实现HttpServlet接口。它连接到远程运行的HttpServlet
url = new URL("http://tomcat-location:8180/myContext");
这是用于向servlet发送消息的方法。但它怎么能得到回复?当我尝试从这个位置读取时,我正在读取指定页面的内容。也许我的整个方法都是错误的,这不是客户端和servlet应该如何相互通信?我怎样才能让他们以简单的方式说话?似乎使用URL,他们通过在该页面上发布和阅读进行通信。如果没有在页面上书写,还有其他方式可以说话吗? 感谢
答案 0 :(得分: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();
}
如果您需要使用代理,则需要做更多工作,因为您需要进行身份验证。在这里,您可以阅读有关它的内容:How do I make HttpURLConnection use a proxy?
如果您希望客户端像浏览器一样工作,您可以尝试Apache HttpComponentes
中的HttpClient现在,如果您需要服务器通知客户端的行为,那么您将需要使用其他方法,例如创建自己的服务器和使用套接字。如果你使用常规浏览器,你可以使用websockets,但似乎不是你的情况。