我需要网络服务还是网络API

时间:2014-10-07 00:43:45

标签: android web-services asp.net-web-api

我正在开发一个类似于表单的Android应用程序。它目前的工作原理是用户输入的数据被解析为json到php脚本并存储在数据库中。我听说这不是最好的方法,而且我需要使用webservice / web API代替与服务器连接,因为这样更安全。我的问题是,我真的需要使用webservice / API来发送数据吗?如果我这样做,你可以引导我到一个我可以学习如何创建它的资源吗?

2 个答案:

答案 0 :(得分:0)

谁说你的网络服务不能用PHP编写? Web服务和读取JSON数据的普通PHP页面之间没有太大区别。只需谷歌浏览类似于" php json网络服务",您就可以获得大量信息。

答案 1 :(得分:0)

如果您有肥皂服务,可以使用ksoap访问它。

以下是示例:

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;

public class ChartService {
private static final String GET_USER_ACTION = "http://service.chartengine.core/getUsersFullNameBasedOnSession";
private static final String GET_USER_METHOD_NAME = "getUsersFullNameBasedOnSession";
private static final String NAMESPACE = "http://service.chartengine.core";
private static final String URL = "http://10.10.10.22:8080/axis2/services/ChartService?wsdl";

private static String name = "";

public static String getUserFullName(){
    if(ECSSecurityService.sessionID.isEmpty())
        return "";
    SoapObject request = new SoapObject(NAMESPACE, GET_USER_METHOD_NAME);
    request.addProperty("sessionIDArg", SecurityService.sessionID);
    final SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    envelope.setOutputSoapObject(request);
    final HttpTransportSE ht = new HttpTransportSE(URL);
    new Thread(new Runnable() {
        @Override
        public void run() {
            try {
                ht.call(GET_USER_ACTION, envelope);
                SoapPrimitive response = (SoapPrimitive)envelope.getResponse();
                name = response.toString();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }).start();

    int countWait = 5; 
    while (name.isEmpty() && countWait > 0){
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
            break;
        }
        countWait--;
    }
    return name;
}

}

此通话有5秒超时。希望它有所帮助。