我一直在尋找如何將參數傳遞給RESTlet webservice,但似乎沒有太多有關RESTlet的教程。如何將參數傳遞給android的RESTlet webservice?
我想發送一些從我的android應用程序中收集的參數的參數(如果我可以使用JSON來實現這一點,這將非常棒)。
在此先感謝。
我一直在尋找如何將參數傳遞給RESTlet webservice,但似乎沒有太多有關RESTlet的教程。如何將參數傳遞給android的RESTlet webservice?
我想發送一些從我的android應用程序中收集的參數的參數(如果我可以使用JSON來實現這一點,這將非常棒)。
在此先感謝。
以及我解決了這個
爲服務器端
@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();
}
}
作爲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();
}
我希望這會有所幫助
的信息,你傳遞了WCF方法名嗎? –
方法名稱僅用於SOAP Web服務(如WCF)這是一個其餘客戶端..通信通過URL和CRUD請求方法完成 –
即使它是一個URL,我們是否會在調用時在URL後面綁定方法名? –
實際上,這取決於你想要做什麼。使用REST(請參閱http://en.wikipedia.org/wiki/Representational_state_transfer),有兩種方式可以傳遞參數或數據。在您需要了解一些概念之前:
Restlet爲REST元素提供Java實體。
於是,經過描述,你可以看到,傳遞數據或參數取決於你的使用情況:
1°)你要更新資源狀態?在這種情況下,您將使用POST或PUT等方法使用請求的內容。數據結構不含文本,JSON,XML或二進制文件... Restlet提供ClientResource類以在RESTful應用程序上執行請求。它還提供支持來構建表示以發送和提取收到的數據。在這種情況下,從表單收集的數據將用於構建表示。下面是一些樣本:
//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();
在這種情況下,從表單收集的數據將被用於構建參數。
希望它可以幫助你。 蒂埃裏
如果你想要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}
我希望這可以幫助你
什麼的Restlet?你的意思是RESTful嗎? –
Restlet是一個用於Java平臺的輕量級全面的開源REST框架。你可以查看[link](http://www.restlet.org/) 和[link](http://en.wikipedia.org/wiki/Restlet)以獲取更多有關restlet –