我正在开发一个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