首页 文章

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

提问于
浏览
0

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

2 回答

  • 0

    谁说你的网络服务不能用PHP编写? Web服务和读取JSON数据的普通PHP页面之间没有太大区别 . 只是谷歌的“PHP json网络服务”,你会得到大量的信息 .

  • 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秒超时 . 希望能帮助到你 .

相关问题