关于okhttp的一个小问题

发布于 2021-11-26 23:59:16 字数 4287 浏览 801 评论 1

我之前是单纯的做APP开发的,现在工作需要,开始学习Python写APP接口,接口写好了,就是一个登陆的小例子,用浏览器和Postman测试,都是可以成功的,所以就想在APP里用okhttp试验一下。APP代码如下:

package com.example.djangodemo.Activity;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.example.djangodemo.R;

import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

public class LoginActivity extends AppCompatActivity {

    private Button Log_button;
    private EditText Log_ed_name;
    private EditText Log_ed_password;
    private String username;
    private String password;
    private TextView Log_tv_reg;
    private static  String BaseUrl = "http://10.0.3.2:8000";


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

        initView();
        initClick();
    }

    /**
     * 初始化点击事件
     */
    private void initClick() {

        Log_button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                username = Log_ed_name.getText().toString().trim();
                password = Log_ed_password.getText().toString().trim();
                if(judgeInput(username,password)){//判断用户输入信息的逻辑
                    new Thread(){
                        @Override
                        public void run() {
                            super.run();
                            try {
                                getDateFromServer(username,password);
                            } catch (IOException e) {
                                e.printStackTrace();
                            }
                        }
                    }.start();
                }
            }
        });

        Log_tv_reg.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
            }
        });
    }

    private void initView() {

        Log_button = (Button) findViewById(R.id.Log_button);
        Log_ed_name = (EditText) findViewById(R.id.Log_ed_name);
        Log_ed_password = (EditText) findViewById(R.id.Log_ed_password);
        Log_tv_reg = (TextView) findViewById(R.id.Log_tv_reg);

    }

    /**
     * 用于判断填写的内容是不是空()
     * @param name
     * @param password
     * @return
     */
    private Boolean judgeInput(String name,String password){

        if(name.isEmpty() || password.isEmpty()){

            Toast.makeText(LoginActivity.this,"账号或密码为空",Toast.LENGTH_SHORT).show();
            return false;
        }else{
            return true;//返回true说明账号输入正确
        }
    }

    /**
     * 提交信息网络操作
     * @param name 用户名
     * @param password 密码
     */
    private void getDateFromServer(String name, String password) throws IOException {

        String url = BaseUrl+"/apps/login/?username="+name+"&password="+password;

        Request request = new Request.Builder()
                .url(url)
                .build();

        OkHttpClient mHttpClient = new OkHttpClient();

        Call call = mHttpClient.newCall(request);

        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {

            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                System.out.println("返回成功!");
            }
        });

    }

    /**
     * 用于判断是否是正确手机号的正则表达式
     * @param mobiles
     * @return
     */
    public static boolean isMobileNO(String mobiles) {
        Pattern p = Pattern
                .compile("^[1][358]\d{9}$");
        Matcher m = p.matcher(mobiles);
        return m.matches();
    }
}

问题来了,

call.enqueue()
这个方法,总是无法执行,打断点调试,也是跳过这一段代码,okhttp不是很熟悉,请大神指点一二;不胜感激!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

静谧 2021-12-02 14:57:55

那我自己回答把,使用Genymotion模拟器的话,需要将代码中的IP地址改为10.0.3.2  就可以了 

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文