2017-09-13 6 views
0

에서 값을 얻을 :어떻게 다음 코드를 사용하는 클라이언트 측에서 HttpMethodParams

@RequestMapping("/requestTest") 
public void requestTest(HttpServletRequest request) throws IOException { 
    String userId = request.getParameter("userId"); 
    String identity= request.getParameter("identity"); 
    String phoneNum= request.getParameter("phoneNum"); 
    System.out.println(userId+identity+phoneNum); 
} 

하지만 난 널을 가지고 :

HashMap<String, String> paramMap = new HashMap<>(); 
paramMap.put("userId", "1579533296"); 
paramMap.put("identity", "352225199101195515"); 
paramMap.put("phoneNum", "15959177178"); 
HttpClient client = new HttpClient(); 
PostMethod method = new PostMethod("http://localhost:8088/requestTest"); 
HttpMethodParams p = new HttpMethodParams(); 
for (Map.Entry<String, String> entry : paramMap.entrySet()) { 
    p.setParameter(entry.getKey(), entry.getValue()); 
} 
method.setParams(p); 
client.executeMethod(method); 

그리고 내 서버 측의 코드는이처럼 userId, identity 및 phoneNum 값은 어떻게 값을 얻을 수 있습니까? 나는 method.setParameter (key, value)를 사용하여 클라이언트 측에서 매개 변수를 설정하고 getParameter (key)를 사용하여 매개 변수 값을 얻을 수 있음을 알고 있지만 서버 측에서 값을 가져 오는 방법이 있다면 궁금하다. HttpMethodParams에 의해.

답변

1

사용자 정의 매개 변수 HttpServletRequestHttpMethodParams 사이에 혼란스러워지고 있다고 생각합니다. 의 JavaDoc을 당으로

- HttpMethodParams,

이 클래스는 HTTP 프로토콜의 컬렉션을 나타냅니다는 HTTP 방식에 적용 매개 변수.

이러한 HTTP 메서드 (see this)에 특정한 사전 정의 된 매개 변수이며 - HttpServletRequest 매개 변수와 관련이 없습니다. here

을 그림과 같이

요청 매개 변수 또한 클라이언트 측에서 사용하는 모든 클래스 (HttpClient, PostMethod, HttpMethodParams 등) 단지 편리한 방법으로 아파치에서 참고하기 위해 당신이 설정해야 HTTP 엔드 포인트를 생성하고 호출하지만 궁극적으로 서버 측에서 수행해야 할 작업은 HttpServletRequest이며 시스템은 Apache HttpClient와는 관련이 없습니다.

그래서 서버 측에있는 모든 것은 - getHeaders(), getIntHeader(), getHeaderNames(), getDateHeader(), getProtocol() 등을 사용하여 헤더 또는 헤더를 추출하는 것입니다. 서버 측이 표준화되어 있으므로 HttpMethodParams과 같은 것을 보지 말아야합니다.

+0

이렇게 ... 서버 측에서 이러한 종류의 측광을 얻을 수있는 방법이 없다는 것을 의미합니까? 나는 방법을 사용할 수 있다는 것을 안다.setParameter (key, value) 클라이언트 쪽에서 매개 변수를 설정하고 getParameter (key)를 사용하여 매개 변수 값을 가져 오지만, HttpMethodParams에 의해 설정된 서버 쪽에서 값을 가져 오는 방법이 있는지 궁금합니다. – zhenganyi

+0

나는 내 대답을 업데이트했다. ... 클라이언트 측 용어는 서버 측에 적용 할 수 없습니다. –

0

HttpServletRequest를 사용하여 매개 변수를 보내야합니다.

HttpMethodParams는 HTTP 메소드에 적용 할 수있는 HTTP 프로토콜 매개 변수의 모음입니다. Http 메서드 매개 변수 목록은 here입니다.

그러나 강제로 HttpMethodParams에서 보내려면 HttpMethodParameter의 변수 중 하나에서 매개 변수의 JSON 표현을 설정하고 해당 변수 이름을 사용하여 값을 검색 할 수 있습니다.

샘플 코드 :

HttpMethodParams p = new HttpMethodParams(); 
p.setCredentialCharset("{userId":1579533296}"); 
//for loop not required 
//your code 

이제 ObjectMapper를 사용하여 해당 JSON을 구문 분석하고 필요한 값을 얻을 수 있습니다.

샘플 코드 :

HttpMethodParams p = new HttpMethodParams(); 
JSONObject jsonObj = new JSONObject(p.getCredentialCharset()); 
jsonObj.get("userdId"); 

참고 :이 작동 할 수 있지만 권장되는 방법.