2011-09-07 2 views
3

나는 RESTlet webservice에 매개 변수를 전달하는 방법을 온라인에서 찾고 있었지만 RESTlet에 관한 튜토리얼이 많지 않다.안드로이드에서 RESTlet webservice에 매개 변수를 전달하는 방법은 무엇입니까?

내 안드로이드 응용 프로그램의 양식에서 수집 한 매개 변수를 보내고 싶습니다. JSON을 사용하면 위와 같이 할 수 있습니다.

미리 감사드립니다.

+0

으로 Restlet 무엇을 도와 드릴 희망? RESTful을 의미합니까? –

+2

Restlet은 Java 플랫폼 용의 가볍고 포괄적 인 오픈 소스 REST 프레임 워크입니다. 당신은 [link] (http://www.restlet.org/) 과 [link] (http://en.wikipedia.org/wiki/Restlet)에 대한 자세한 정보는 restlet –

답변

5

잘 난 서버 측

HttpClient client = new DefaultHttpClient(); 
    String responseBody; 
    JSONObject jsonObject = new JSONObject(); 

    try{ 
     HttpPost post = new HttpPost(WebService_URL); 
     jsonObject.put("field1", "........."); 
     jsonObject.put("field2", "........."); 

     StringEntity se = new StringEntity(jsonObject.toString()); 

     post.setEntity(se); 
     post.setHeader(new BasicHeader(HTTP.CONTENT_TYPE, "application/json")); 
     post.setHeader("Content-type", "application/json"); 
     Log.e("webservice request","executing"); 

     ResponseHandler responseHandler = new BasicResponseHandler(); 
     responseBody = client.execute(post, responseHandler); 
     /* 
     * You can work here on your responseBody 
     * if it's a simple String or XML/JSON response 
     */ 
    } 
    catch (Exception e) { 
     e.printStackTrace(); 
    } 

내가이 도움이 될 수 있습니다 희망 안드로이드 사이드에 관해서는

@Post 
public JSONArray serverSideFunction(Representation entity) 
throws JSONException { 

    try { 
     JSONObject req = (new JsonRepresentation(entity)).getJsonObject(); 
     System.out.println(req.getString(/* filed name */)); 
     System.out.println(req.getString(/* filed name */)); 
     /* 
     * you can retrieve all the fields here 
     * and make all necessary actions 
     */ 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

에 관해서는이

를 해결

+0

을 참고하십시오. WCF 메서드 이름을 전달 했습니까? –

+0

메소드 이름은 SOAP 웹 서비스 (예 : WCF)에만 사용됩니다. 이것은 휴식 클라이언트입니다. URL과 CRUD 요청 메소드를 통해 통신이 이루어집니다. –

+0

URL이라도 URL 뒤에 메서드 이름을 바인드하지 않습니까? –

2

사실, 원하는 작업에 따라 다릅니다. REST (http://en.wikipedia.org/wiki/Representational_state_transfer 참조)를 사용하면 매개 변수 나 데이터를 전달하는 두 가지 방법이 있습니다. 일부 개념을 이해하기 전에 :

  • 리소스 : REST 엔티티 자체.
  • 표현 : 상태에 해당하며 다른 HTTP 메소드를 사용하여 가져 오거나 업데이트 할 수 있습니다. 컨텐트의 종류는 컨텐트 유형 헤더 (Restlet의 미디어 유형)를 사용하여 식별됩니다.
  • 방법 : GET 메서드는 리소스 상태를 가져오고, PUT은 업데이트하고, POST는 새 리소스를 만들고, 해당 상태를 동시에 지정하고, DELETE를 사용하여 리소스를 삭제합니다.

Restlet은 REST 요소에 대한 Java 엔터티를 제공합니다.)

1 °를 사용하면 자원 상태를 업데이트 하시겠습니까 :

그래서, 후 데이터 나 매개 변수를 전달하는 사용 사례의 의존한다는 것을 볼 수 있다고 설명? 이 경우 POST 또는 PUT과 같은 메소드와 함께 요청 내용을 사용합니다. 데이터 구조에는 텍스트, JSON, XML 또는 바이너리가 없습니다. Restlet은 RESTful 애플리케이션에 대한 요청을 실행하는 ClientResource 클래스를 제공합니다. 또한 수신 된 데이터를 보내고 추출하는 표현을 작성하기위한 지원을 제공합니다. 이 경우 양식에서 수집 한 데이터가 표현을 작성하는 데 사용됩니다. 다음은 몇 가지 샘플은 다음과 같습니다

//Samples for POST/PUT 
ClientResource cr = new ClientResource("http://..."); 
cr.post(new StringRepresentation("test")); 

MyBean bean = new MyBean(); 
(...) 
//Jackson is a tool for JSON format 
JacksonRepresentation<MyBean> repr 
     = new JacksonRepresentation<MyBean>(bean); 
cr.put(repr); 

//Samples for GET 
Representation repr1 = cr.get(); 
bean = (new JacksonRepresentation<MyBean>(repr1, MyBean.class)).getObject(); 

2 °) (예를 들어, 데이터 등 retreive하고 구성하는 당신이 당신의 GET 요청에 매개 변수를 지정 하시겠습니까)? 아래에 설명 된대로이 경우, 당신은 단순히 ClientResource에 추가 할 수 있습니다 :

ClientResource cr = new ClientResource("http://..."); 
cr.getReference().addQueryParameter("q", "restlet"); 
Representation repr = cr.get(); 

를이 경우, 양식에서 수집 된 데이터는 매개 변수를 구축하는 데 사용됩니다.

희망이 있으면 도움이됩니다. 티에리

0

하는 경우 json 구조로 요청하고 응답을 JSONObject로 원한다.

public class RequestJSON extends ServerRecource{ 

    @Post("json") 
    public JSONObject testRequest(String entity){ 
    JSONObject request = new JSONObject(entity); 
    String value1 = request.getString("key1"); 
    int value2 = request.getInt("key2"); 
    return /* your JSONObject response */; 
    } 

} 

을 그리고 귀하의 요청은 다음과 같습니다 : 어쩌면 당신은 서버 측에서 다음과 같이 할 수

{"key1":"value1", "key2":value2} 

을 나는이 당신

관련 문제