我正在開發一個Android應用程序,其中所有數據都來自PHP Web服務。現在我很困惑,如何做到這一點。哪些Web服務(ksoap,soap,rest等)我應該在PHP中開發,這樣當我在Android中調用該Web服務時,它是輕量級的?我需要爲這種類型的應用程序做些什麼?另外目前我在本地進行應用程序,所以PHP將從mysql數據庫中獲取數據。請建議我應該開發哪些Web服務。我如何在Android應用程序中調用它?另外我想知道,無論如何,我可以在Android中開發Web服務,因爲我只有靜態數據可以通過,並且可能需要輸入2或3個數據。如何在Android應用程序中調用PHP Web服務?
0
A
回答
0
由於您需要小數據,而且這也是本地的,所以最好去REST,因爲它不需要任何額外的東西,如KSOAP或其他任何東西。如果分佈式環境存在,那麼SOAP是更好的。我認爲REST很好。
Here是一個鏈接,你可以檢查。
1
我不會建議你使用SOAP,但實現起來並不舒服。 我花了很多時間來解析來自SOAP服務的這些元素,我建議你實施JSON
webservice。
/*web service parameters*/
private static final String TAG = RestSearchResultList.class.getSimpleName();
private static final String SOAP_ACTION = "http://tempuri.org/GetSomething";
private static final String METHOD_NAME = "GetSomething";
private static final String NAMESPACE = "http://tempuri.org/";
private static final String URL = "http://www.yoursite.com /Services/webservice.asmx";
調用服務:
private SoapObject CallWebService() {
try {
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
request.addProperty("lang", Language);
request.addProperty("restTitle", mSearchText);
request.addProperty("x", mLongitude);
request.addProperty("y", mLatitude);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.implicitTypes = true;
envelope.dotNet = true;
envelope.encodingStyle = SoapSerializationEnvelope.XSD;
envelope.setOutputSoapObject(request);
MarshalDouble md = new MarshalDouble();
md.register(envelope);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
androidHttpTransport.call(SOAP_ACTION, envelope);
SoapObject result = (SoapObject) envelope.getResponse();
SearchingMap.getInstance().Clear();
return result;
} catch (Exception ex) {
Log.e(TAG, ex.getMessage());
}
return null;
}
這僅僅是調用服務,而不分析它和東西。
JSON例如:
public class AsyncJsonDataTask extends AsyncTask<String, Integer, JSONArray> {
private JsonLoader _jsonHelper;
private IJsonDataListener _dataListener;
private ProgressDialog _dialog;
/*Progress bar widget initialize*/
public AsyncJsonDataTask(IJsonDataListener dataListener, ProgressDialog dialog) {
_dataListener = dataListener;
_jsonHelper = new JsonLoader();
_dialog = dialog;
}
@Override
protected JSONArray doInBackground(String... urls) {
JSONArray result = _jsonHelper.GetJSONArray(urls[0]);
return result;
}
@Override
protected void onPostExecute(JSONArray result) {
if (_dialog != null) {
if (_dialog.isShowing()) {
_dialog.dismiss();
}
}
_dataListener.OnJsonDataLoadComplete(result); //gets data oncomplete
}
@Override
protected void onProgressUpdate(Integer... progress) {
}
@Override
protected void onPreExecute() {
if (_dialog != null) {
_dialog.setMessage("Load Data");
_dialog.show();
}
}
}
public class JsonHelper {
/* public static Object toJSON(Object object) throws JSONException {
if (object instanceof Map) {
JSONObject json = new JSONObject();
Map map = (Map) object;
for (Object key : map.keySet()) {
json.put(key.toString(), toJSON(map.get(key)));
}
return json;
} else if (object instanceof Iterable) {
JSONArray json = new JSONArray();
for (Object value : ((Iterable)object)) {
json.put(value);
}
return json;
} else {
return object;
}
}
public static boolean isEmptyObject(JSONObject object) {
return object.names() == null;
}
public static Map<String, Object> getMap(JSONObject object, String key) throws JSONException {
return toMap(object.getJSONObject(key));
}
public static Map<String, Object> toMap(JSONObject object) throws JSONException {
Map<String, Object> map = new HashMap();
Iterator keys = object.keys();
while (keys.hasNext()) {
String key = (String) keys.next();
map.put(key, fromJson(object.get(key)));
}
return map;
}
public static List toList(JSONArray array) throws JSONException {
List list = new ArrayList();
for (int i = 0; i < array.length(); i++) {
list.add(fromJson(array.get(i)));
}
return list;
}
private static Object fromJson(Object json) throws JSONException {
if (json == JSONObject.NULL) {
return null;
} else if (json instanceof JSONObject) {
return toMap((JSONObject) json);
} else if (json instanceof JSONArray) {
return toList((JSONArray) json);
} else {
return json;
}
}*/
}
我在整個項目一旦寫入這個沒有CONFIGS之類的東西,我保留SRP
在這裏,你可以查看你所需要的,並使用它。
相關問題
- 1. 如何在android應用程序的phonegap中調用web服務?
- 2. Web服務PHP + Android應用程序
- 3. 如何在PHP Web應用程序中調用和使用Google Maps Web服務?
- 4. 如何從android應用程序調用Web服務?
- 5. 如何在phonegap應用程序中調用RESTful Web服務?
- 6. 如何在android應用程序中使用asp.net web服務
- 7. 使用HttpClient調用Android應用程序中的Web服務
- 8. 如何在Java Web應用程序中調節Web服務調用
- 9. 如何在Android中調用Web服務
- 10. 如何在android中調用web服務
- 11. 如何在android中調用web服務
- 12. asp.net應用程序調用Web服務
- 13. 應用程序調用Web服務
- 14. 如何調用的.NET Web服務在Android應用程序在Android應用程序使用Eclipse
- 15. 如何在Eclipse中調試Web服務應用程序?
- 16. 使用android應用程序在本地測試PHP Web服務
- 17. 如何在android應用程序中集成Web服務器?
- 18. 如何從MFC應用程序中調用Web服務? (VS 2008)
- 19. 如何在vs2010 web應用程序中使用EAN web服務
- 20. 使用KSOAP從android應用程序調用asmx Web服務
- 21. Android應用程序web服務黑客
- 22. Win-app調用web服務與調用相同服務的web應用程序
- 23. 如何在C#窗口應用程序中調節Web服務調用
- 24. 從Android應用程序調用Web服務返回空對象
- 25. 從android應用程序調用Web服務
- 26. 從Android應用程序調用Web服務的最佳方式
- 27. Android應用程序調用.NET Web服務
- 28. 網站託管和從android應用程序調用web服務
- 29. Axis Web服務無法從Web應用程序中調用
- 30. 如何在Web服務上測試Android應用程序
REST可以用於從數據庫中獲取數據嗎?我的意思是我沒有使用在線網站數據。我只使用筆記本電腦的本地數據。 – Dhwani
@Dhwani你有web服務,這將返回你從數據庫中獲取數據,所以你必須在webservice.u中實現,可以看到在我提供的鏈接中,並且你必須在你的android prpject中獲取這些數據並解析它使用json解析技術或xml解析技術。 –
好的,謝謝。我瀏覽了你的網站。它幫助了我。但我有一點查詢,它是基本的Web服務,但什麼類型(REST/SOAP)? – Dhwani