python 을 사용 하여 서버 를 구축 하고 안 드 로 이 드 와 의 통신 을 실현 하 는 방법

머리말
오 랜 만 에 기술적 인 글 을 쓰 지 않 으 면 블 로그 가 폐 기 될 까 봐 걱정 입 니 다.오늘 은 서버 를 구축 하고 안 드 로 이 드 와 통신 하 는 글 이 있 습 니 다.코드 양 을 절약 하기 위해 서버 에서 Python Flask 를 사용 하고 안 드 로 이 드 에서 Okhttp 을 사용 하 는 지 예전 모습 입 니 다.글 은 원 리 를 따 지지 않 고 구체 적 으로 만 실현 되 고 원 리 를 알 고 싶 으 면 홈 페이지 에 가서 상세 하 게 연구 할 수 있 습 니 다.
서버
환경:서버 에서 Python 3.5+PyCharm 사용
새 Flask 항목
그림 보기:

그리고 create,초기 화 완료 후 프로젝트 구 조 는 다음 과 같 아야 합 니 다.

사실 이 럴 때 프로젝트 를 직접 시작 하면 브 라 우 저 에서 접근 할 수 있 습 니 다.

이것 이 바로 기 존의 프레임 워 크 를 사용 하 는 장점 hhh 입 니 다.그러나 우 리 는 클 라 이언 트 와 의 통신 을 실현 하고 자 합 니 다.자 연 스 럽 게 더 많은 code 를 해 야 합 니 다.
코드 를 작성 하여 클 라 이언 트 로부터 데 이 터 를 받 아들 입 니 다.
우선 helloWorld 의 코드:

@app.route('/')
def hello_world():
  return 'Hello World!'
여기@app.route('/')는 서버 주 소 를 방문 할 때 이 방법 을 사용 한 다 는 뜻 입 니 다.그래서 우 리 는 이런 방식 으로 자신의 수 요 를 실현 할 수 있 습 니 다.예 를 들 어:

@app.route('/demo', methods=['POST'])
def demo():
  value = request.form['demo_tag']
  print(value)
  return "ok"
위의 코드 는 네가 통과 할 수 있다 는 뜻 이다.http://127.0.0.1:5000/demo
demo 접근 방법,request.form[demotag']의 반환 값 은 클 라 이언 트 가 보 낸 tag 가 demo 입 니 다.tag 의 데 이 터 는 다음 글 에서 데 이 터 를 어떻게 보 내 는 지 상세 하 게 소개 할 것 입 니 다.마지막 으로 값 을 되 돌려 주 는 것 은 스스로 지정 할 수 있 습 니 다.여기 서 마음대로 하 나 를 주 었 습 니 다.여기까지 서버 는 이미 ok 입 니 다.클 라 이언 트 가 어떻게 실현 되 는 지 봅 시다.
안 드 로 이 드 엔 드
클 라 이언 트 가 Okhttp 를 사용 하려 면 jar 패키지 두 개,주 소 를 가 져 와 야 합 니 다.
jar 패키지 다운로드 주소:http://square.github.io/okhttp/

jar 패키지 2 개 를 모두 사용 해 야 합 니 다.그림 에서 3 개의 동그라미 가 끝나 면 ok 입 니 다.로 컬 에 다운로드 하여 직접 가 져 오 면 이 부분 은 자세히 쓰 지 않 습 니 다.가 져 오지 않 을 경우 Google 로 가 져 올 수 있 습 니 다.
jar 가방 을 수 동 으로 가 져 오지 않 으 려 면:
implementation ‘com.squareup.okhttp3:okhttp:3.11.0'
가 져 온 후 바로 코드 보기:

@Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ok = findViewById(R.id.ok);
    username = findViewById(R.id.username);
    password = findViewById(R.id.password);


    ok.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        String name = String.valueOf(username.getText());
        String pass = String.valueOf(password.getText());
        String url = "http://112.86.199.151:5000/gesture";//           
        SendMessage(url, name, pass);
      }
    });
  }


  private void SendMessage(String url, final String userName, String passWord) {

    value = new float[550];
    Random random = new Random();
    for (int i = 0; i < 550; i++) {
      if (i % 2 == 0) {
        value[i] = random.nextFloat();
      } else {
        value[i] = -random.nextFloat();
      }

    }
    String str_value = FloatArrayToString(value);

    OkHttpClient client = new OkHttpClient();
    FormBody.Builder formBuilder = new FormBody.Builder();
    formBuilder.add("demo", str_value);

    Request request = new Request.Builder().url(url).post(formBuilder.build()).build();
    Call call = client.newCall(request);
    call.enqueue(new Callback() {
      @Override
      public void onFailure(Call call, IOException e) {
        runOnUiThread(new Runnable() {
          @Override
          public void run() {
            runOnUiThread(new Runnable() {
              @Override
              public void run() {
                Toast.makeText(MainActivity.this, "     ", Toast.LENGTH_SHORT).show();
              }
            });
          }
        });
      }

      @Override
      public void onResponse(Call call, final Response response) throws IOException {
        final String res = response.body().string();
        runOnUiThread(new Runnable() {
          @Override
          public void run() {
            if (res.equals("0")) {
              runOnUiThread(new Runnable() {
                @Override
                public void run() {
                  Toast.makeText(MainActivity.this, "  ", Toast.LENGTH_SHORT).show();
                }
              });
            } else {
              runOnUiThread(new Runnable() {
                @Override
                public void run() {
                  Toast.makeText(MainActivity.this, "  "+res, Toast.LENGTH_SHORT).show();
                }
              });

            }

          }
        });
      }
    });

  }
저 는 무 작위 로 배열 을 만 들 고 서버 에 보 냈 습 니 다.핵심 코드 는 간단 합 니 다.프레임 워 크 가 있 으 면 정말 하고 싶 은 대로 할 수 있 습 니 다.밥 을 먹 으 러 갈 수 없습니다.더 상세 하 게 할 기분 이 들 수도 있 습 니 다.기 존 코드 에 대해 스스로 연구 하 세 요.
https://github.com/DmrfCoder/OkHttpDemo
이상 python 을 사용 하여 서버 를 구축 하고 안 드 로 이 드 측 과 의 통신 을 실현 하 는 방법 은 바로 작은 편집 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.참고 가 되 고 저희 도 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기