2012-06-16 3 views
1

내 자신의 저지 휴식 클라이언트에 연결하는 안드로이드 응용 프로그램을 쓰고있어. HTTP get 명령은 정상적으로 작동하지만 서버에 무언가를 보내려는 POST에 문제가 있습니다. 405가 다시 전송되므로 서버가 요청을 리소스 메소드와 일치시킬 수없는 것처럼 보입니다. 이견있는 사람? 아래의 테스트 코드 ...안드로이드 클라이언트 저지 레스트에 연결 - 게시 405

REST 서버에

@PUT 
@Consumes(MultiPartMediaTypes.MULTIPART_MIXED) 
public Response putResponse(MultiPart multiPart) { 
    System.out.println(multiPart.getBodyParts()); 
    return null; 
} 

인조 CLIENT

HttpClient httpclient = new DefaultHttpClient(); 
HttpPost request = new HttpPost(URL + "responses"); 
request.addHeader("Content-Type", "multipart/mixed"); 

MultipartEntity entity = new MultipartEntity(
HttpMultipartMode.BROWSER_COMPATIBLE); 
entity.addPart("Testpart1", new StringBody("<testxml></testxml>")); 
entity.addPart("image1", new StringBody("imagedata1")); 
request.setEntity(entity); 
request.addHeader("deviceId", deviceId); 
ResponseHandler<String> handler = new BasicResponseHandler(); 
try { 
    String result = httpclient.execute(request, handler); 
    Log.i("tag", result); 
return result; 
} catch (ClientProtocolException e) { 
e.printStackTrace(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} finally { 
    httpclient.getConnectionManager().shutdown(); 
} 
return null; 

tcpmon을 트래픽은 다음 POST/Maintenance_Server/휴식/응답 HTTP/1.1 콘텐츠 형식을 보여줍니다 멀티를/혼합 deviceId : xxxxx 콘텐츠 길이 : 244 주최자 : 127.0.0.1:12345 연결 : Keep-Alive 사용자 에이전트 : 아파치 HttpClient를/UNAVAILABLE (자바 1.4)

--jju2JFDOlzJ4LQo7YkrJYLuwDUHmB5b7 
Content-Disposition: form-data; name="Testpart1" 

<testxml></testxml> 
--jju2JFDOlzJ4LQo7YkrJYLuwDUHmB5b7 
Content-Disposition: form-data; name="image1" 

imagedata1 
--jju2JFDOlzJ4LQo7YkrJYLuwDUHmB5b7-- 

감사

마크

답변

0

당신은 HTTP POST를 전송되지만, 서버 쪽에서 만 PUT HTTP 핸들러를 선언 . 따라서 POST를 모든 메소드와 일치시킬 수는 없으므로 405. @PUT에서 @POST로 자원 메소드의 어노테이션을 변경하거나 클라이언트가 POST 대신 HTTP PUT을 송신하십시오.

+0

찾고있는 동안 그 문제를 볼 수 없었습니다. 두 번째 눈을 가져 주셔서 감사합니다. –

관련 문제