2013-08-10 3 views
-1

Tomcat 사용. 서버에 문자열을 보내고 서버가 문자열을 조작 한 다음 다시 보내도록하려고합니다. 출력 스트림에 작성한 후 클라이언트에서 InputStream을 열려고 시도 할 때마다 응용 프로그램이 중단됩니다.Tomcat 오류 : java.io.IOException : 서버에서 HTTP 응답 코드 : 405를 반환했습니다.

서버 :

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 

무엇이 오류의 원인이되는, 내가 잘못하고있는 중이 야 무엇을?

+0

가능한 복제본 [doGet 및 doPost String = null 문제] (http://stackoverflow.com/questions/18162280/detect-and-dopost-string-null-issue) –

답변

0

HTTP 서블릿을 사용하고 있습니다. Tomcat이 웹 서버로 실행 중입니다. 직렬화 된 Java 객체가 아닌 클라이언트에서 HTTP를 사용해야합니다. Java 직렬화를 사용하려면 소켓을 사용해야합니다. 서블릿을 사용하려면 정보를 HTTP에 넣는 형식을 사용해야합니다. JSON (Jackson과 함께)은 좋은 선택입니다.

+0

하지만 직렬화 된 개체를 보낼 때 작동합니다 , 하나를 받아서 같은 블록에 다시 보내려고 할 때 충돌이 발생합니다. – CptRayMar

+0

이것은 RPC 구현의 모델이 아니지만 직렬화 된 Java 객체를 교환 할 수있는 이유는 없습니다. –

관련 문제