glam 2019-11-19 16:53 采纳率: 0%
浏览 327
已结题

okhttp与远程服务器通信不上,本地服务器可以通信

在做安卓客户端和python服务端的通信。在app上输入用户名和密码发给服务端,我在本地运行py文件可以实现通信。但是我把py文件传到服务器上启动就不能返回结果。请教各位大神,初次接触这方面。
服务端用的简单的flask,代码如下

from flask import Flask
from flask import request
import os

app = Flask(__name__)

@app.route('/')
def test():
    return '服务器正常运行'



#此方法处理用户注册
@app.route('/register',methods=['POST'])
def register():
    username=request.form['username']
    password=request.form['password']

    print('username:'+username)
    print('password:'+password)
    return '注册成功'

if __name__ == '__main__':
    app.run(host='0.0.0.0')

Android的代码:

private void SendMessage(String url, final String userName, String passWord) {
        OkHttpClient client = new OkHttpClient();
        FormBody.Builder formBuilder = new FormBody.Builder();
        formBuilder.add("username", userName);
        formBuilder.add("password", passWord);
        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();
                System.out.println("3333333333333333333");
                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, "成功", Toast.LENGTH_SHORT).show();
                                }
                            });

                        }

                    }
                });
            }
        });
  • 写回答

1条回答 默认 最新

  • dabocaiqq 2019-11-19 17:02
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 CNVcaller安装后无法找到文件
  • ¥15 visual studio2022中文乱码无法解决
  • ¥15 关于华为5g模块mh5000-31接线问题
  • ¥15 keil L6007U报错
  • ¥15 webapi 发布到iis后无法访问
  • ¥15 初学者如何快速上手学习stm32?
  • ¥15 如何自动更换布娃娃图片上的衣服
  • ¥15 心理学eprime编程
  • ¥15 arduino esp8266开发
  • ¥15 stm32单片机通过485发送命令给驱动器控制电机转动,同样的代码f103可以控制电机转动,换到f407不能动了,但是用串口助手调试407显示发送的命令都是正确的,卡了好久了这是发送规则