安卓第三方插件async-http

一.什么是安卓async-http
async-http是用于请求网络的工具,是一个第三方的网络插件,可以方便访问网络。
二.如何使用async-http
1.首先添加依赖包,下载第三方插件

compile 'com.loopj.android:android-async-http:1.4.9'

2.然后创建类写访问网络方法

package com.example.ll.king;

import android.content.Context;

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

/**
 * Created by ll on 2018/4/10.
 */

public class Adk {
    //写的是http网络接口,静态是因为是这一段http是一直不变的
    private static final String BASE_URL = "http://103.244.59.105:8014/paopaoserver/";

    //new一个私有的AsyncHttpClient
    private static AsyncHttpClient client = new AsyncHttpClient();

    //这是一个get的回调方法,所以是公共类
    public static void get(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
        client.get(getAbsoluteUrl(url), params, responseHandler);
    }

    //post回调方法
    public static void post(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
        client.post(getAbsoluteUrl(url), params, responseHandler);
    }

    //http网络访问的公式:访问的网址=BASE_URL(固定不变的) + relativeUrl
    private static String getAbsoluteUrl(String relativeUrl) {
        return BASE_URL + relativeUrl;
    }

}

3.接着写好xml的布局

<?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:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.ll.king.MainActivity">
<EditText
    android:id="@+id/xiueru"
    android:layout_width="match_parent"
    android:layout_height="50dp" />
    <Button
        android:text="测试一下"
        android:id="@+id/btn_ll"
        android:layout_width="match_parent"
        android:layout_height="50dp" />
    <Button
        android:id="@+id/add_btn"
        android:text="删除一条数据"
        android:layout_width="match_parent"
        android:layout_height="50dp" />
    <Button
        android:text="访问网络"
        android:id="@+id/cmc"
        android:layout_width="match_parent"
        android:layout_height="50dp" />
    <Button
        android:text="跑跑APP"
        android:id="@+id/psp"
        android:layout_width="match_parent"
        android:layout_height="50dp" />
</LinearLayout>

4.主页面进行网络访问(键值对形式)

package com.example.ll.king;

import android.content.ContentResolver;
import android.content.ContentValues;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.RequestParams;
import com.loopj.android.http.TextHttpResponseHandler;

import cz.msebera.android.httpclient.Header;


public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    //定义控件
    private Button textbtn;
    private Button addbtn;
    private EditText editText;
    private Button btn;
    private Button btn2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //绑定控件的方法
        BindId();
    }
    //绑定控件
    private void BindId() {
        textbtn = findViewById(R.id.btn_ll);
        textbtn.setOnClickListener(this);
        addbtn = findViewById(R.id.add_btn);
        addbtn.setOnClickListener(this);
        editText = findViewById(R.id.xiueru);
        btn = findViewById(R.id.cmc);
        btn.setOnClickListener(this);
        btn2 = findViewById(R.id.psp);
        btn2.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.btn_ll:
                String name = editText.getText().toString();

                Uri uri = Uri.parse("content://com.ll.Mys.Rng");
                ContentResolver resolver = getContentResolver();
                ContentValues contentValues = new ContentValues();
                contentValues.put("name", name);
                resolver.insert(uri, contentValues);

                break;
            case R.id.add_btn:
                String name1 = editText.getText().toString();

                Uri uri1 = Uri.parse("content://com.ll.Mys.Rng");
                ContentResolver resolver1 = getContentResolver();

                resolver1.delete(uri1, "name=?", new String[]{name1});

                break;
            case R.id.cmc:
                AsyncHttpClient client = new AsyncHttpClient();
                client.get("https://www.youkuaiyun.com/", new TextHttpResponseHandler() {
                    @Override
                    public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
                        Toast.makeText(MainActivity.this, "访问网络失败", Toast.LENGTH_SHORT).show();
                    }

                    @Override
                    public void onSuccess(int statusCode, Header[] headers, String responseString) {
                        Toast.makeText(MainActivity.this, responseString, Toast.LENGTH_SHORT).show();

                    }
                });
                break;
            case R.id.psp:
                RequestParams requestParams = new RequestParams();
                requestParams.put("params", "{\"page\":1,\"page_count\":10}");
                //以键值对的形式进行访问
                Adk.get("articles", requestParams, new TextHttpResponseHandler() {
                    @Override
                    public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
                        Toast.makeText(MainActivity.this, "访问网络失败", Toast.LENGTH_SHORT).show();
                    }

                    @Override
                    public void onSuccess(int statusCode, Header[] headers, String responseString) {
                        Toast.makeText(MainActivity.this, responseString, Toast.LENGTH_SHORT).show();
                    }
                });
                break;
        }

    }
}
### 实现 Flutter 应用中的 Facebook 第三方登录 为了在 Flutter 应用中集成 Facebook 登录功能,需按照以下方法操作: #### 添加依赖项 在项目的 `pubspec.yaml` 文件内添加 `flutter_facebook_auth` 插件作为依赖。版本号建议采用较新的稳定版以获得更好的兼容性和安全性支持。 ```yaml dependencies: flutter_facebook_auth: ^4.4.0 [^1] ``` #### 初始化设置 完成依赖安装之后,还需进行一些初始化工作来准备使用此插件。对于 Android 和 iOS 平台而言,分别有特定的配置需求。 ##### Android平台配置 - 在 `android/build.gradle` 中确保classpath包含了必要的库。 - 修改 `AndroidManifest.xml` 来声明权限并注册Activity组件用于处理回调请求。 ##### iOS平台配置 - 更新 `ios/Runner/Info.plist` 文件加入必需的信息字段。 - 安装Facebook SDK并通过CocoaPods管理依赖关系。 这些步骤的具体细节可以参照官方文档说明[^3]。 #### 编写代码逻辑 下面给出一段简单的示例代码展示如何调用API实现登录过程: ```dart import 'package:flutter/material.dart'; import 'package:flutter_facebook_auth/flutter_facebook_auth.dart'; class LoginScreen extends StatefulWidget { @override _LoginScreenState createState() => _LoginScreenState(); } class _LoginScreenState extends State<LoginScreen> { Map<String, dynamic>? _userData; Future<void> loginWithFB() async { try{ final result = await FacebookAuth.instance.login(); // 开始登录流程 if (result.status == LoginStatus.success){ final userData = await FacebookAuth.instance.getUserData(); setState((){_userData = userData;}); } } catch(e){ print("Error during facebook sign-in $e"); } } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text('Facebook Sign-In')), body: Center( child: ElevatedButton(onPressed: (){loginWithFB();}, child: Text('Sign In with Facebook')) ), ); } } ``` 通过上述方式可以在Flutter应用程序里轻松地集成了来自Facebook的身份验证服务[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值