Le serveur Android envoie des informations de localisation au client

Un, le problème

Le serveur Android envoie des informations de localisation au client

2. Environnement

AndroidStudio Eclipse

Troisièmement, la mise en œuvre du code

Le servlet côté serveur appelle la couche Dao pour rechercher des données dans la base de données et intègre les données trouvées dans une chaîne json (format de tableau json) dans le servlet.

Serveur:

	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
//		response.setContentType("text/plain; charset=UTF-8");
		request.setCharacterEncoding("UTF-8");
		ServerToParentDao stpDao = new ServerToParentDao();
//		String num = mtpDao.query();
//		System.out.println(num);
		PrintWriter out = response.getWriter();
		StringBuffer sb = new StringBuffer();
		sb.append('[');
		List<Address> addrList = stpDao.queryOne();
		for (Address address : addrList) {
    
    
			sb.append('{').append("\"id\":").append("" + address.getId() + "").append(",");
			sb.append("\"latitude\":").append("\"" + address.getLatitude() + "\"").append(",");
			sb.append("\"longitude\":").append("\"" + address.getLongitude() + "\"").append(",");
			sb.append("\"time\":\"").append(address.getTime());
			sb.append("\"}").append(",");
		}
		sb.deleteCharAt(sb.length() - 1);
		sb.append(']');
		out.write(sb.toString());
		System.out.println(sb.toString());
//		request.setAttribute("json",sb.toString());
//		request.getRequestDispatcher("watch.jsp").forward(request, response);
//		out.write(num);
//			response.getOutputStream().write(mtpDao.query().getBytes("UTF-8"));
		out.flush();
		out.close();

//		System.err.println(request.getParameter(""));
//			System.out.println(code);
		System.out.println("连接成功");
//		PrintWriter printWriter = response.getWriter();
//		printWriter.print("客户端你好,数据连接成功!");
//		printWriter.flush();
//		printWriter.close();
	}

Client:

sendButton.setOnClickListener(new View.OnClickListener() {
    
    
            @Override
            public void onClick(View v) {
    
    
                HttpPost httpRequest = new HttpPost("http://192.168.159.1:8080/MyAndroidServer/ServerToParentServlet");
                List<NameValuePair> params = new ArrayList<NameValuePair>();
//                String str = "1";
//                params.add(new BasicNameValuePair("Code", str));
                Log.i("MY3", "Has Done");
                try {
    
    
//                    httpRequest.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));//设置请求参数项
                    HttpClient httpClient = new DefaultHttpClient();
                    HttpResponse httpResponse = httpClient.execute(httpRequest);//执行请求返回响应
                    if (httpResponse.getStatusLine().getStatusCode() == 200) {
    
    //判断是否请求成功
                        HttpEntity entity = httpResponse.getEntity();
                        if (entity != null) {
    
    
                            System.out.println("---------");
//                            System.out.println("Respone content" + EntityUtils.toString(entity, "UTF-8"));
                            Intent intent = new Intent(ParentRequest.this,MainActivity.class);
                            intent.putExtra("jsonString",EntityUtils.toString(entity, "UTF-8"));
                            startActivity(intent);
                        }
                Log.i("MY2", "Has Done");
                    } else {
    
    
                        Toast.makeText(ParentRequest.this, "没有获取到Android服务器端的响应!", Toast.LENGTH_LONG).show();
                    }
                } catch (ClientProtocolException e) {
    
    
                    e.printStackTrace();
                } catch (UnsupportedEncodingException e) {
    
    
                    e.printStackTrace();
                } catch (IOException e) {
    
    
                    e.printStackTrace();
                }
            }
        });

Format d'écriture d'adresse de demande: http: // adresse IP hôte: numéro de port / nom du projet / nom de l'action
Méthode HttpPost pour établir une connexion, HttpResponse.getEntity () pour obtenir les informations de réponse, EntityUtils.toString (entité, "UTF-8" ) pour convertir l'entité En tant que chaîne String, l'intention transmettra la chaîne JSON à d'autres pages d'activité.


Classe d'analyse de chaîne JSON:

public static List<Address> getAddress(String jsonStr)
            throws JSONException {
    
    
        /******************* 解析 ***********************/
        // 初始化list数组对象
        List<Address> mList = new ArrayList<Address>();
        Address address = new Address();
        JSONArray array = new JSONArray(jsonStr);
        for (int i = 0; i < array.length(); i++) {
    
    
            JSONObject jsonObject = array.getJSONObject(i);
            address = new Address(jsonObject.getInt("id"),
                    jsonObject.getString("latitude"), jsonObject.getString("longitude"),
                    jsonObject.getString("time"));
            mList.add(address);
        }
        return mList;
    }

J'écrivais ceci comme un positionnement d'enfant à l'époque.La conception de la base de données n'était pas complète et la réflexion était plutôt étroite.
Ce qu'il faut considérer, c'est que les informations sur l'enfant dans la table d'informations sur l'enfant doivent correspondre aux informations sur les parents dans la table des parents, c'est-à-dire que cette application est destinée à plusieurs paires de parents et d'enfants, et non à une paire de parents et d'enfants.
Le serveur ne doit pas utiliser le serveur local, il doit utiliser le serveur cloud, afin qu'il ne soit pas limité par le même LAN.

Le client Android envoie des informations de localisation au serveur.
Veuillez consulter cet article.

Si vous avez des questions, veuillez laisser un message à échanger!

Je suppose que tu aimes

Origine blog.csdn.net/weixin_43752257/article/details/112966877
conseillé
Classement