2012-07-30 3 views
2

편리한 웹 서비스에 게시 기능을 구현하려고합니다. 그러나 게시 클라이언트를 사용하여 데이터를 게시하려고 할 때마다 서버는 항상 400 개의 잘못된 요청 예외를 반환합니다. 다음은 JSONObject를 Restful Web Service에 게시 할 때 java - 400

public static HttpResponse post(String url, JSONObject data) throws IOException { 
    HttpClient client = new DefaultHttpClient(); 
    StringEntity json = new StringEntity(data.toString()); 
    json.setContentType("application/json"); 
    HttpPost post = new HttpPost(url); 
    post.addHeader("Content-Type", "application/json"); 
    post.setEntity(json); 
    return client.execute(post); 
} 

내 서버 측 방법에 대한 방법 헤더입니다 : 아래

은 내 게시물 클라이언트입니다

@POST 
@Consumes("application/json") 
@Produces("text/plain") 
@Path("/add") 
public String addApp(@PathParam("device") String device, JSONObject json) { 

내가 프로그램을 실행할 때마다, 내가 얻을 다음 HttpResponse에 내 게시물 방법에서 :

HTTP/1.1 400 Bad Request [Server: nginx, Date: Mon, 30 Jul 2012 21:48:12 GMT, Content-Type: text/plain, Transfer-Encoding: chunked, Connection: keep-alive, Keep-Alive: timeout=5, X-Powered-By: Servlet/3.0 JSP/2.2 (GlassFish Server Open Source Edition 3.1 Java/Sun Microsystems Inc./1.6)] 

이 문제의 가능한 원인은 무엇입니까?

+0

특수 문자 일 수 있습니까? – kosa

+0

JSON 문자열이나 URL의 특수 문자는 무엇입니까? – ashwin153

+0

당신은 어떤 나머지 도서관을 사용하고 있는지에 관해 더 많은 정보를 제공해야합니까? 잘 작동하는 다른 나머지 webservice 호출을 사용하고 있습니까? 일반 설정 등 기타 – bluesman

답변

1

서버 서명에 PathParam 인수를 지정했지만 @Path 주석에 해당 항목이 없습니다. 이미 URL에 장치 문자열을 추가하는 경우 나는 당신의 클라이언트 서명에서 말할 수 없다하지만 난 당신이 뭔가 할 생각 :

@Path("/add/{device}") 

이 저지 :

@POST 
@Consumes("application/json") 
@Produces("text/plain") 
@Path("/add/{device}") 
public String addApp(@PathParam("device") String device, JSONObject json) { 

이것은 중요한 부분입니다 장치에 채워야 할 String을 찾을 위치를 알 수 있습니다.

+0

내 클래스 헤더에 PathParam 장치를 지정합니다. 그래도 입력 주셔서 감사합니다. – ashwin153

관련 문제