Android核心技术-day05-01-类QQ登陆Post方式 及 使用第三方库的方式

使用POST方式登录QQ.rar POST方式代码,模似POST方式登录QQ,适合初学者和想学习POST方式提交数据的人员。 立即下载

package com.gaozewen.qqloginpost;


import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;

import com.gaozewen.qqloginpost.utils.StreamUtils;

import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;

public class MainActivity extends AppCompatActivity {

    private static final int GET_SERVER_RESP = 1;
    private static final int GET_ERROR = 2;

    private EditText mEt_qqNumber;
    private EditText mEt_password;
    private CheckBox mCb_remember;
    private Button mBt_login;

    /**
     * 1.定义一个共享参数(存放数据方便的 api)
     */
    private SharedPreferences sp;

    // 新建 res/drawable-hdpi
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 2. 通过上下文得到一个共享参数的实例对象
        sp = this.getSharedPreferences("config", MODE_PRIVATE);

        mEt_qqNumber = findViewById(R.id.et_qqnumber);
        mEt_password = findViewById(R.id.et_password);
        mCb_remember = findViewById(R.id.cb_remember);
        mBt_login = findViewById(R.id.bt_login);
        readStore();
    }

    /**
     * 从 sp 文件中读取信息
     */
    private void readStore() {
        // data/data/包名/shared_prefs
        String qq = sp.getString("qq", "");
        String password = sp.getString("password", "");
        mEt_qqNumber.setText(qq);
        mEt_password.setText(password);
        mCb_remember.setChecked(true);

    }

    // 登陆按钮的点击事件
    public void login(View view) {
        final String qq = mEt_qqNumber.getText().toString().trim();
        final String password = mEt_password.getText().toString().trim();

        if (TextUtils.isEmpty(qq) || TextUtils.isEmpty(password)) {
            Toast.makeText(this, "用户名和密码不能为空", Toast.LENGTH_SHORT).show();
        } else {
            // 判断是否要记录用户名和密码
            if (mCb_remember.isChecked()) {
                // 被选中状态需要记录用户名和密码
                // 3. 将数据保存到 sp 文件中
                SharedPreferences.Editor edit = sp.edit();
                edit.putString("qq", qq);
                edit.putString("password", password);
                edit.apply(); // apply() 异步开个线程执行 commit() 同步 立即执行
            }

            // 发请求时禁用 button
            mBt_login.setEnabled(false);
            new Thread() {
                @Override
                public void run() {
                    try {
                        Thread.sleep(5000);
                        String path = String.format("http://192.168.1.102:8080/login?username=%s&password=%s", qq, password);
                        URL url = new URL(path);
                        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                        conn.setRequestMethod("POST");
                        conn.setConnectTimeout(5000);

                        // 设置发送数据为表单类型,会被添加到 HTTP body 中
                        conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
                        String data = String.format("username=%s&password=%s",URLEncoder.encode(qq,"utf-8"),URLEncoder.encode(password,"utf-8"));
                        conn.setRequestProperty("Content-Length", String.valueOf(data.length()));
                        // 指定请求输出模式
                        conn.setDoOutput(true); // 运行当前的应用程序给服务器写数据
                        conn.getOutputStream().write(data.getBytes());

                        int code = conn.getResponseCode();
                        if (code == 200) {
                            InputStream is = conn.getInputStream();
                            String result = StreamUtils.readStream(is);

                            showToastInAnyThread(result);
                        } else {
                            showToastInAnyThread("请求失败");
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                        showToastInAnyThread("请求失败");
                    }
                }
            }.start();
        }


    }

    /**
     * 在任何线程中都可以调用 函数 Toast 方法
     * @param result
     */
    private void showToastInAnyThread(final String result) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                Toast.makeText(getApplicationContext(),result, Toast.LENGTH_SHORT).show();
            }
        });
    }
}

第三方库

import com.gaozewen.qqloginother.loopj.android.http.AsyncHttpClient;
import com.gaozewen.qqloginother.loopj.android.http.AsyncHttpResponseHandler;
import com.gaozewen.qqloginother.loopj.android.http.RequestParams;

import org.apache.http.Header;

大语言模型原理与工程实践:手把手教你训练 7B 大语言模型 自动化训练框架 近年来,大语言模型(Large Language Models,LLMs)在自然语言处理领域取得了突破性进展。从GPT-3到ChatGPT,再到最新的GPT-4,这些模型展现出了惊人的语言理解和生成能力,引发了学术界和产业界的广泛关注。然而,训练如此庞大的模型不仅需要海量的数据和计算资源,还需要复杂的工程实践和优化技巧。本文将深入探讨大语言模型的原理,并以7B参数规模的模型为例,详细介绍如何构建一个自动化训练框架,使读者能够亲自动手训练自己的大语言模型。 阅读详情

相关推荐

Mem0 vs LangMem vs Letta:三大AI记忆框架实战对比(附代码示例)

本文深入对比了Mem0、LangMem和Letta三大AI记忆框架的核心特性与适用场景。Mem0提供开箱即用的记忆管理服务,适合快速集成;LangMem深度融入LangGraph生态,适合复杂工作流;Letta则采用虚拟内存系统,旨在突破上下文窗口限制。文章通过实战代码示例,为开发者选择适合其业务需求的AI记忆解决方案提供了清晰指南。

g9h0i1的博客 679

Android实现简单的注册登录 POST方式提交数据 基于AndroidStudio开发

登录布局页面 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tool...

XieTeTe的博客 8309

项目管理——14规划绩效域论文套路

规划绩效域论文套路

Flee Elf 1152

android studio 使用post方法

/** * 将图片转换成Base64编码的字符串 */ public String bitmaptoString(Bitmap bitmap) { // 将Bitmap转换成字符串 String string = null; ByteArrayOutputStream bStream = new ByteArrayOutputStream(); bitmap.compress(CompressFormat..

qq_35482604的博客 2548

大疆C板使用C610电调驱动M2006电机(hal库)

大疆C板使用C610电调驱动M2006电机,以及遇到代码没问题,但是电机死活不转的处理

qq_46210601的博客 6012

MOS管的体二极管在LLC中的作用

MOSFET是一个三端器件(G、D、S),在N沟道MOSFET的结构中,源极和漏极之间的N型材料中自然形成了一个寄生的PN结,这个PN结就是体二极管(Body Diode),它是不可避免的器件结构。📌 对于N沟MOSFET:体二极管是从漏极 D 到源极 S 的正向导通二极管,方向为 D → S。MOS管的体二极管在LLC中并不是主功率通道,但却是实现软开关(ZVS)和能量过渡的关键“临时路径”。用得好,它是你的朋友;忽略它,电路就可能烧毁。

weixin_43199439的博客 699

【实战】(一)android模拟qq登录(get和post方法)

一、项目介绍 主要是模拟qq登录,像服务器发送登录数据,如果数据相等,则登录成功。 二、项目架构 客户端Eclipse中 StreamTool.java 主要功能是将返回的数据流转化为数据串的工具类 源码: MainActivity.java: package com.lcz.login_in; import java.io.InputStream; import java

Mind_programmonkey的博客 4225

连接参数详解:Connection Interval, Slave Latency, Supervision Timeout 的协同与调优实战

在低功耗蓝牙(BLE)开发与调试中,Connection Interval(连接间隔)、Slave Latency(从机延迟) 和 Supervision Timeout(监督超时) 是三个核心参数。它们不仅直接影响设备的通信性能、功耗表现和连接稳定性,更是各类技术面试与认证考试的高频考点。本文将从基础概念出发,深入剖析三者的协同机制,结合历年真题解析考点与解题思路,并通过实战案例演示调优方法,快速掌握这一核心知识点。

byte轻骑兵的技术小窝 2761

Android studio如何正确的导入第三方Library库?

对于Android studio导入第三方Library库,在网上有很多的博文都有讲解,但是对于新手有的地方还是看不明白,那些地方不明白呢?接下来我们具体看一下如何正确的导入第三方library。方法    1.File---->new--->ImporModule---->选择库(Source directory)----->next。具体操作步骤如下图所示:   到对应...

杨的博客 5万+

大模型之Spring AI实战系列(一):基础认知篇 - 开启智能应用开发之旅

Spring AI 是一个轻量级开源框架,旨在简化 AI 模型在企业级 Java 应用中的集成与管理。它提供了跨多个 AI 服务提供商的便携式 API,支持聊天、文本转图像、嵌入式模型等多种功能,并兼容主流的 AI 模型提供商如 OpenAI、Google 等。Spring AI 的核心功能包括结构化输出、向量数据库支持、工具/函数调用、可观察性、文档摄取 ETL 框架、AI 模型评估等。

寻道AI,探索AI无限可能! 6356

CDD那些事 - DID and SecurityAccess

本文介绍了SecurityAccessSID27的安全访问配置流程:1.通过StateGroups添加Level2群组;2.在Classes定义L2子功能;3.配置4步解锁流程,选择对应解锁等级;4.在DiagnosticInstance设置请求响应。同时说明了DID配置的两种方式:在DIDs页面定义或通过Identification页面创建,前者定义更全面。文章还提到ServiceList支持view/edit模式,其中edit模式可配置DID的多服务支持(如同时支持SID22读取和SID2E写入),但该

ziteng21的博客 255

android配置引用第三方库

android配置引用第三方库

gftygff的博客 410

51智能小车(双轮)

前几天接了个小单子,是一个基于51单品机的作品,发现自己对小车的认识还是不太🆗。也算是完成了任了的;欢迎各位小伙伴来多多交流,大家一起进步。最后有需要单片机课程设计的小伙伴滴滴我哦(有偿)。企鹅:2397746994。

qq_56992543的博客 2346

android好用的第三方库2018使用总结

需要android开发视频资料可以加我微信: 1914532832  验证信息请注明:android开发 不知不觉2018年已经过了大半,来总结一下今年用到的一些好用的框架和第三方库,包括App架构、异步通信库、注入注解框架、网络请求库、图片加载库、动画库、数据库、音频视频库、平台分享库、蓝牙库、权限请求库等。 一、App架构 MVP模式:因为 Android 并没有严格的业务和界面区分,项...

yuchu1900的博客 2238

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Static interface methods are only supported starting with Android N (--min-api 24): void butterknif

指定项目的 jdk 版本 为 1.8 主工程 app 目录下 build.gradle   android { ... // 指定jdk版本 compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VER...

知识改变一切 802

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Android核心技术-day06-03-调用系统短信发送(不需要授权)

package com.gaozewen.sendsms; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; public clas...

知识改变一切 666

Only fullscreen opaque activities can request orientation

manifest里 Activity 中 android:screenOrientation="portrait" 和 styles.xml 中 <item name="android:windowIsTranslucent">true</item>  同时设置的话 可出现崩溃 解决方案 去掉 android:windowIsTranslucent=“true” 即可...

知识改变一切 487

Android核心技术-day05-03-学生信息管理系统小练习

package com.gaozewen.studentsystem.db; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; imp...

知识改变一切 462

Android核心技术-day02-03-获取手机内部存储空间

package com.gaozewen.storagespace; import android.os.Bundle; import android.os.Environment; import android.support.v7.app.AppCompatActivity; import android.text.format.Formatter; import android.widg...

知识改变一切 358

Android核心技术-day02-05-创建别的应用程序可以读写的文件

package com.gaozewen.createfile; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import java.io.FileOutputStream; public class MainActivity extends AppCompatActivity { ...

知识改变一切 335

Android核心技术-day04-01-网络图片查看器(安卓消息循环机制)

package com.gaozewen.netimageviewer; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.os.Handler; import android.os.Message; import a...

知识改变一切 334

Android核心技术-day05-05-安卓下的多线程下载(带ProgressBar)有bug版

package com.gaozewen.multidownloader; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.EditText; import android.widget.Lin...

知识改变一切 280

Android核心技术-day01-01-click事件的多种写法

方法一: Button bt_click = findViewById(R.id.bt_click); bt_click.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { System.out.println("哈...

知识改变一切 246

Android核心技术-day06-04-短信助手

package com.gaozewen.smshelper; import android.content.Intent; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import a...

知识改变一切 234

Android核心技术-day04-02-网页源代码查看器(StreamUtils)

package com.gaozewen.htmlviewer.utils; import java.io.ByteArrayOutputStream; import java.io.InputStream; /** * 流的工具类 * @author gzw * @version $Rev$ * @des ${TODO} * @updateAuthor $Author$ * @u...

知识改变一切 232

Android核心技术-day01-03-短信发送器(授权代码封装)

BaseActivity.java package com.gaozewen.smssender; import android.content.DialogInterface; import android.content.pm.PackageManager; import android.os.Build; import android.support.annotation.NonNul...

知识改变一切 232

Android核心技术-day06-05-Activity生命周期,应用场景

package com.gaozewen.lifecycle; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; public class MainActivity extends...

知识改变一切 227
上一篇: Android核心技术-day04-04-Web方式类qq登陆
下一篇: Android核心技术-day05-02-文件上传
心灵泽尘
博客等级 码龄10年 32粉丝 83原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值