2013-03-21 1 views
1

와 방법 내가 좋아하는 뭔가가있는 경우 :PUT의 @FormParam

@PUT 
@Path("/login") 
@Produces({"application/json", "text/plain"}) 
@Consumes("application/json") 
public String login(@FormParam("login") String login, @FormParam("password") String password) throws Exception 
{ 
    String response = null; 
    response = new UserManager().login(login, password); 
    return response; 
} 

어떻게 (내용 필드에) 내 REST 서비스를 테스트 할 수있는 두 매개 변수를 입력 할 수 있습니다? 당신이 제출할 때 ... 양식 데이터를

답변

1

양식 파라미터 데이터 만 존재합니다

{"login":"xxxxx","password":"xxxxx"} 

감사 : 이 같은하지 않습니다. 리소스의 @Consumes 유형을 multipart/form-data으로 변경하십시오. 클라이언트 측에서 다음

@PUT 
@Path("/login") 
@Produces({ "application/json", "text/plain" }) 
@Consumes("multipart/form-data") 
public String login(@FormParam("login") String login, 
     @FormParam("password") String password) { 
    String response = null; 
    response = new UserManager().login(login, password); 
    return response; 
} 

설정 :

  • 콘텐츠 유형 : 다중/폼 데이터를
  • 보조 노트에 loginpassword

에 대한 양식 변수 추가 학습을 목적으로하지 않는다고 가정하면 로그인 엔드 포인트를 SSL로 보호하고 암호를 해시를 통해 전달하기 전에 해싱 할 수 있습니다.


편집, 내가 필요한 형태로 데이터를 클라이언트 요청 전송의 예를 포함하고 의견을 바탕으로

:

try { 
    HttpClient httpclient = new DefaultHttpClient(); 
    HttpPost post = new HttpPost(BASE_URI + "/services/users/login"); 

    // Setup form data 
    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
    nameValuePairs.add(new BasicNameValuePair("login", "blive1")); 
    nameValuePairs.add(new BasicNameValuePair("password", 
      "d30a62033c24df68bb091a958a68a169")); 
    post.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

    // Execute request 
    HttpResponse response = httpclient.execute(post); 

    // Check response status and read data 
    if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { 
     String data = EntityUtils.toString(response.getEntity()); 
    } 
} catch (Exception e) { 
    System.out.println(e); 
} 
+0

뭔가 등이 : 'HttpPut httpPut = 새 HttpPut (BASE_URI + "/services.users/login"); ' '양식 f = 새 양식(); f.add ("login", "xxxxx"); f.add ("password", "xxxxx");'?? – user2144555

+0

@ user2144555 - Apache HttpComponents를 사용하여 서버 리소스를 호출 할 수있는 유용한 방법을 보려면 편집을 참조하십시오. – Perception

+0

아파치 HttpClient도 사용하고있었습니다. 하지만 "** 로그인 및 비밀번호 ** 양식 변수"가 다른 방식으로 전송되었다고 생각했습니다. 나는 그것을 시도 할 것이다! – user2144555