python 을 사용 하여 서버 를 구축 하고 안 드 로 이 드 와 의 통신 을 실현 하 는 방법
5728 단어 python서버Android커 뮤 니 케 이 션
오 랜 만 에 기술적 인 글 을 쓰 지 않 으 면 블 로그 가 폐 기 될 까 봐 걱정 입 니 다.오늘 은 서버 를 구축 하고 안 드 로 이 드 와 통신 하 는 글 이 있 습 니 다.코드 양 을 절약 하기 위해 서버 에서 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/demodemo 접근 방법,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 을 사용 하여 서버 를 구축 하고 안 드 로 이 드 측 과 의 통신 을 실현 하 는 방법 은 바로 작은 편집 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.참고 가 되 고 저희 도 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.