2011-09-07 12 views
3

私は、RESTlet webserviceにパラメータを渡す方法をオンラインで探していましたが、RESTletに関するチュートリアルはあまりないようです。アンドロイドからRESTlet webserviceにパラメータを渡す方法は?

私のアンドロイドアプリケーションでフォームから収集されたいくつかのパラメータを送信したいと思います(これはJSONを使用すれば可能です)。

ありがとうございます。

+0

助けることができるのRestletは何ですか?あなたはRESTfulを意味しますか? –

+2

Restletは、Javaプラットフォーム用の軽量で包括的なオープンソースのRESTフレームワークです。 restlet –

答えて

5

私がいる場合、これは助け

+0

についての詳細は、[link](http://www.restlet.org/) と[link](http://en.wikipedia.org/wiki/Restlet)を参照してください。 WCFメソッド名を渡しましたか? –

+0

メソッド名はSOAP Webサービス(WCFなど)にのみ使用されます。これは休憩クライアントです。URLとCRUDリクエストメソッドを使用して通信が行われます –

+0

URLであっても、URLの後ろにメソッド名をバインドしませんか? –

2

実際、あなたが何をしたいかによって異なります。 REST(http://en.wikipedia.org/wiki/Representational_state_transferを参照)では、パラメータまたはデータを渡す2つの方法があります。いくつかの概念を理解する前に:

  • リソース: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°)(例えば、データがそうで盗んとするように設定するには、あなたのGETリクエストにパラメータを指定しますか)?この場合は、後述のようにあなたは、単に、ClientResourceにそれを追加することができます。この場合

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

を、フォームから収集されたデータは、パラメータを構築するために使用されます。

お手伝いします。 ティエリー

0

のものとすることができる願っていますAndroidのサイド

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(); 
    } 
} 

用としてこの

を解決あなたは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} 

あなた

関連する問題