Tomcat错误:java.io.IOException:服务器为URL返回HTTP响应代码:405:

Tomcat错误:java.io.IOException:服务器为URL返回HTTP响应代码:405:,java,tomcat,servlets,http-status-code-405,Java,Tomcat,Servlets,Http Status Code 405,使用Tomcat。我想向服务器发送一个字符串,让服务器处理该字符串,然后将其发回。在写入输出流后,每当我试图在客户端上打开InputStream时,应用程序就会崩溃 服务器: public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{ try{ ServletInputStream is =

使用Tomcat。我想向服务器发送一个字符串,让服务器处理该字符串,然后将其发回。在写入输出流后,每当我试图在客户端上打开InputStream时,应用程序就会崩溃

服务器:

public void doGet(HttpServletRequest request, 
     HttpServletResponse response) throws IOException, ServletException{
    try{

        ServletInputStream is = request.getInputStream();
        ObjectInputStream ois = new ObjectInputStream(is);

        String s = (String)ois.readObject();

        is.close();
        ois.close();

        ServletOutputStream os = response.getOutputStream(); 
        ObjectOutputStream oos = new ObjectOutputStream(os); 

        oos.writeObject("return: "+s);
        oos.flush();

        os.close();
        oos.close();

    }
    catch(Exception e){

    }
}
客户:

URLConnection c = new URL("*****************").openConnection();
c.setDoInput(true);
c.setDoOutput(true);
c.connect();

OutputStream os = c.getOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(os);

oos.writeObject("This is the send");
oos.flush();
oos.close();

InputStream is = c.getInputStream();
ObjectInputStream ois = new ObjectInputStream(is);
System.out.println("ret: "+ois.readObject());

ois.close();
is.close();
os.close();
它返回以下错误:

java.io.IOException: Server returned HTTP response code: 405 for URL: 
http://mywebpage.com

是什么导致了这个错误,我做错了什么?

您使用的是HTTP servlet;Tomcat作为Web服务器运行。您必须从客户端讲HTTP,而不是序列化Java对象。如果希望使用Java序列化,则需要使用套接字。如果您想使用servlet,您需要使用某种形式的将信息放入HTTP;JSON(与Jackson一起)是一个不错的选择。

但是当我发送一个序列化对象时它会工作,当我尝试接收一个对象并将其发送回同一个块时它就会崩溃。虽然这可能不是RPC实现的模型,但没有理由不能交易序列化Java对象。可能是重复的