2012-08-10 5 views
1

나는 웹 서비스를 구축했다. 해당 웹 서비스에 대한 Tapestry 웹 앱. 나는 주위를 둘러 보았고 대부분의 사람들은 이것을 달성하기 위해 Apache HttpClient를 사용한다고 말한다. HttpClient와 함께 URIBuilder를 사용하고 있습니다. 테스트 나는 일반 텍스트 등으로 전송되는 암호를 사용하여 문제를 실현 *이HttpClient를 사용하여 웹 서비스 URL에 JSON 쿼리 문자열 보내기 (Java)

{"user":{"userEmail":"[email protected]","firstName":"John","lastName":"Doe","phone":"203- 555-5555"},"password":"dead"}

같은 외모를 보내려고하고

json으로 개체 ...

작동하는 URL () 수동으로 웹 브라우저에 입력하고이 웹 서비스가 이미 안드로이드 클라이언트와 아이폰 OS 클라이언트를 서비스로하는 것은 다음은이

http:// ##.##.###.##/createuser?json={"user":{"userEmail":"[email protected]","firstName":"John","lastName":"Doe","phone":"203-555-5555"},"password":"dead"}

처럼 보이는 것은 내가 m을 가지고있는 HttpClient를 코드 이 애가 왜 일하지 않는지 알아 내려고 애 쓰고있는 google'ing에서 함께 ashed. 기본적으로 URIBuilder를 사용하여 URI를 만든 다음 새로 생성 된 URI를 사용하여 HttpPost 또는 HttpGet 객체를 생성합니다. 그러나 URIBuilding 프로세스에서 문제가 발생합니다. 디버깅 할 때 URI의 모든 측면을 설정하려고하면 예외가 throw됩니다.

Object onSuccess() throws ClientProtocolException, IOException, URISyntaxException{ 
    // json = {"user":{"userEmail":"[email protected]","firstName":"John","lastName":"Doe","phone":"203- 555-5555"},"password":"dead"} 
    String json = user.toJson(); 
    URIBuilder builder = new URIBuilder(); 
    // Error gets thrown when I step over the next line 
    builder.setScheme("http").setHost("##.###.##.###").setPort(8080).setPath("createuser").setQuery("json=" +json); 
    URI uri = builder.build(); 

    HttpPost request = new HttpPost(uri); 
    DefaultHttpClient httpClient = new DefaultHttpClient(); 
    String tmp = request.getURI().toString(); 

    HttpResponse response = httpClient.execute(request); 
    index.setResponse(EntityUtils.toString(response.getEntity())); 
    return index; 

내가 코드에 주석 라인을 통해 단계 때 돌아 오면 오류는 내가 보내는이 요청을 얻을 방법과 객체의 다른 조합을 많이 시도

[ERROR] TapestryModule.RequestExceptionHandler Processing of request failed with uncaught exception:org.apache.http.client.utils.URLEncodedUtils.parse(Ljava/lang/String;Ljava/nio/charset/Charset;)Ljava/util/List; java.lang.NoSuchMethodError:org.apache.http.client.utils.URLEncodedUtils.parse(Ljava/lang/String;Ljava/nio/charset/Charset;)Ljava/util/List;

입니다 서버에 올바르게 작동하고 아무것도 작동하지 않는 것 같습니다. 바라기를 나는 비교적 간단한 무언가를 바라보고있다.

제공 할 수있는 지침에 대해 미리 감사드립니다.

+0

이 오류는 잘못된 버전의 HttpClient 라이브러리를 사용하고 있다는 의미입니다. – Luciano

+0

어떤 버전을 사용해야합니까? http://hc.apache.org/downloads.cgi – mfunaro

+0

에서 모든 jar를 포함하는 zip 파일을 다운로드했습니다. 그 방법을 호출하는 라이브러리에 따라 달라집니다. 해당 라이브러리의. 서가 종속성을 나열하는지 확인하십시오. – Luciano

답변

1

클래스 경로에 아파치 httpcomponents의 버전이 잘못되었거나 버전이 잘못되었을 수 있습니다. Tapestry를 실행 중이면 오류 페이지의 클래스 경로에있는 모든 패키지를 출력합니다. 거기에서 조사하여 어떤 httpcomponents가로드되었는지 찾아서 어디서 왔는지 고칩니다.

그래도 작동하지 않으면 일부 런타임 환경을 우리와 공유해야합니다. 명령 줄에서 실행중인 IDE 또는 실행중인 서블릿 엔진 Maven을 사용하고 있습니까? 그렇다면 귀하의 pom을 공유하십시오. 기타

+0

근본적으로 코드에 문제가 있습니까? 나는 Tapestry가 HttpClient와 HttpCore를 기본 프로젝트 설정과 함께 포함하는 것 같다. 그래서 나는 원래의 문제를 지나쳤지만, 나는 여전히 적절한 요청을 얻는 것 같지 않습니다. – mfunaro

+0

초기 문제를 해결할 수 있었다면 나에게 문제가 해결되고 새로운 문제가 생겼다. "아직까지는 올바른 요청을하지 못하는 것"보다 조금 더 많은 것을 필요로합니다. 이 문제를 닫고 변경된 코드와 정확한 문제/예외 사항으로 새 문제를 시작하십시오. 여기에 의견을 남기면 내가 살펴볼 것입니다. 행운을 빕니다! – joostschouten