2014-11-07 2 views
1

I 설치 다음과 같이 HttpServletResponse를에 HttpServletRequest의 몸을 쓰는 간단한 부두 서블릿과 부두 서버 (v9.3.0.M0) :OkHttp 클라이언트 호출을 올바르게 지정하는 방법은 무엇입니까?

import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import java.io.BufferedReader; 
import java.io.IOException; 

public class SimpleServlet extends HttpServlet { 

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { 
     StringBuilder stringBuilder = new StringBuilder(); 
     BufferedReader reader = request.getReader(); 
     try { 
      String line; 
      while ((line = reader.readLine()) != null) { 
       stringBuilder.append(line).append('\n'); 
      } 
     } finally { 
      reader.close(); 
     } 
     String testString = stringBuilder.toString(); 
     response.getWriter().println(testString); 
    } 

} 

내가 지정하고 JettyCient (v9.3.0을 실행합니다. M0)은 다음과 같이 비슷합니다 :

완벽하게 실행됩니다. 즉 서버가 의도 한대로 응답하고 "this is a test"라고 씁니다.

import com.squareup.okhttp.*; 
import java.io.IOException; 


public class OkHttpClient { 

    public static void main(String[] args) throws IOException { 

     com.squareup.okhttp.OkHttpClient client = new com.squareup.okhttp.OkHttpClient(); 
     RequestBody body = RequestBody.create(MediaType.parse("text/plain; charset=utf-8"), "this is a test"); 
     Request request = new Request.Builder() 
       .url("http://localhost:8083/hello") 
       .post(body) 
       .build(); 

     Response response = client.newCall(request).execute(); 

     System.out.println(response.body().toString()); 

    } 
} 

나는 빈 몸으로 끝낼 : 나는 많은이 같은 OkHttpClient (V2.0.0)를 지정

. 따라서 시체가 서버에 도착하지 않는 것처럼 보입니다. 여기에 중요한 것을 놓치지 않습니까?

답변

0

시도 Response.body().string()이 아니라 Response.body().to string()입니다.

+0

감사합니다. 제시는 아직 작동하지 않습니다. 즉, 다시 빈 몸통을 얻습니다. –

+0

최근이 문제에 직면했습니다. 그러나 포스트 응답 상태 코드가 200이면 응답 본문 메시지를받을 수 있습니다. 하지만 응답 상태 코드가 200 (404,500 등)이 아닌 경우 본문 메시지를 수신 할 수 없습니다. @ StefanSchröder가 문제를 파악할 수 있었습니까? 미리 감사드립니다. –

관련 문제