0

我正在开发客户端/服务器应用程序(客户端是一个向服务器发送数据的 Android 应用程序)。我正在使用 Java 开发服务器。我已经使用 SQL Navigator 5.5“使用 NetBeans”连接了服务器应用程序。想用Json做中间件,不知道怎么用!什么最合适,XML 还是 Json?我需要使用 HTTP 吗?如果是这样,如何(因为我希望能够保护应用程序)?

服务器应该响应的另一件事是Android应用程序通过发送“经度和纬度”,Android应该“地理编码”并以地图“位置”的形式显示。另外,我需要更多地了解应该在应用程序上运行的 Web 服务的概念。

这是服务器代码:(服务器应该从客户端获取的值是“long 和 lat”) /* * 要更改此模板,请选择 Tools | 模板 * 并在编辑器中打开模板。*/

package pkg;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.jws.WebService;
import javax.jws.WebMethod;
import javax.jws.WebParam;


@WebService(serviceName = "lbsws")
public class lbsws {

    /** This is a sample web service operation */
    @WebMethod(operationName = "hello")
    public String hello(@WebParam(name = "name") String longg) {


        String result=null;
        try
        {



        Connection con = dbConnection.getdbConnection("system","lbs","orcll", "localhost");
        Statement st = con.createStatement(); 


        String lat ="10";

        String query="select longg,lat,abs(("+longg+"-longg))/abs(("+lat+"-lat)) as function1 from lbs where abs(("+longg+"-longg))/abs(("+lat+"-lat)) = ("+
        "select min(abs(("+longg+"-longg))/abs(("+lat+"-lat))) from lbs)";

        ResultSet rs = st.executeQuery(query);
        while(rs.next())
        {
            result = rs.getFloat("longg")+","+ rs.getFloat("lat")+"-"+ rs.getFloat("function1");
        }
        }
        catch(Exception e)
        {
            System.out.println(e.toString());
        }
        return result;
    }

}
4

1 回答 1

2

一些东西:

1) JSON 支持传输层。不要再想了。

2) 使用 JSON Web 服务。在基于 Java 的系统中使用 HttpClient。只是为了获得响应,您可以根据需要将 JSON 转换为对象。但是调用网络服务是通过 HttpClient

3) 创建 JSON 服务。那么你可以使用泽西岛。有几个选择。我建议在 Tomcat 服务器上进行开发。它更快,而且不像 Java EE 服务器那样上/下。除了泽西岛,还有其他一些不错的选择。

但主要是先写最简单的东西,然后让它端到端工作。这就是你想要做的。

只需生成一个返回系统时间的服务并通过 JSON 将其发回,在客户端使用它并显示。然后重新评估泽西与其他任何东西。但是让一些东西端到端运行。

所以第一步是编写一个 JSON Web 服务并在浏览器中测试它。现在不要担心客户端。只需让服务运行并使用浏览器调用它。顺便说一句,有理由使用 RESTful JSON Web 服务。它是构建 Web 服务的好方法。

永远不要同时解决两个问题。忘记连接到数据库,直到您使用已存根的数据启动并运行服务。

于 2012-07-17T22:19:23.137 回答