android十大常用对话框

article/2025/10/29 9:22:19

Android十大常用对话框

    • 一、对话框效果
    • 二、代码

最近老师叫我们整理android常用的对话框,我整理了十种对话框,用于分享交流,希望指正!

一、对话框效果

主界面
在这里插入图片描述
1.普通对话框
在这里插入图片描述
2.单选对话框
在这里插入图片描述
3.多选对话框
在这里插入图片描述
4.列表对话框
在这里插入图片描述
5.不带进度条对话框
在这里插入图片描述
6.带进度条对话框
在这里插入图片描述
7.自定义布局对话框
在这里插入图片描述
8.自定义对话框
在这里插入图片描述
9.日期对话框
在这里插入图片描述
10.时间对话框
在这里插入图片描述

二、代码

1.将所有的对话框方法封装在DialogBox类中

package com.example.homeworkfour;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.app.TimePickerDialog;
import android.content.DialogInterface;
import android.icu.util.Calendar;
import android.os.Build;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.TimePicker;
import android.widget.Toast;
import androidx.annotation.RequiresApi;
public class DialogBox {/*** 1.普通对话框*/protected void ordinaryDialogBox(final Activity activity){AlertDialog.Builder dialogBox = new AlertDialog.Builder(activity);dialogBox.setTitle("普通对话框");dialogBox.setMessage("你要离开吗?");dialogBox.setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(activity,"我要离开!",Toast.LENGTH_SHORT).show();}});dialogBox.setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(activity,"我不想离开!",Toast.LENGTH_SHORT).show();}});dialogBox.create().show();}/*** 2.单选对话框*/protected void radioDialogBox(final Activity activity){final AlertDialog.Builder dialogBox = new AlertDialog.Builder(activity);dialogBox.setTitle("你最喜欢的科目是?");/**因为setMessage和setSingleChoiceItems的显示区域互相冲突,*所以它们不能被同时使用,在这里我们必须注释掉掉这下面这行代码,* 但是,我们仍然可以使用setTitle()来设置标题或消息*///dialogBox.setMessage("");final String[] items = {"物理","化学","生物","历史"};dialogBox.setSingleChoiceItems(items,-1, new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(activity,"你最喜欢的科目是"+items[which],Toast.LENGTH_SHORT).show();//选择一个选项之后,就立即关闭对话框dialog.dismiss();}});dialogBox.create().show();}/*** 3.多选对话框*/protected void multipleDialogBox(final Activity activity){AlertDialog.Builder dialogBox = new AlertDialog.Builder(activity);dialogBox.setTitle("你喜欢哪些食物?");final String[] items = {"胡萝卜","白菜","菠菜","土豆","黄瓜","西红柿"};//标识选项的状态,false为未选中,true为选中final boolean[] check = {false,false,false,false,false,false};dialogBox.setMultiChoiceItems(items, check, new DialogInterface.OnMultiChoiceClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which, boolean isChecked) {//当被选中时,选项的状态为true,否则为falseif (isChecked){check[which] = true;Toast.makeText(activity,"你选中了"+items[which],Toast.LENGTH_SHORT).show();}else {check[which] = false;Toast.makeText(activity,"你取消了"+items[which],Toast.LENGTH_SHORT).show();}}});dialogBox.setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {String str = "";for (int i = 0; i < check.length; i++) {if (check[i]){str = str + "," + items[i];}}//显示被选中的内容if(str!="") {Toast.makeText(activity, "你喜欢" + str, Toast.LENGTH_SHORT).show();}}});dialogBox.create().show();}/*** 4.列表对话框*/protected void listDialogBox(final Activity activity){AlertDialog.Builder dialogBox = new AlertDialog.Builder(activity);dialogBox.setTitle("课程安排:");final String[] items = {"第一节(数学)","第二节(地理)","第三节(历史)","第四节(美术)"};dialogBox.setItems(items, new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(activity,items[which],Toast.LENGTH_SHORT).show();}});dialogBox.create().show();}/*** 5.不带进度条对话框*/protected void noProgressDialogBox(Activity activity){ProgressDialog dialogBox = new ProgressDialog(activity);dialogBox.setProgressStyle(ProgressDialog.STYLE_SPINNER);dialogBox.setTitle("不带进度条对话框");dialogBox.setMessage("加载中~");dialogBox.show();}/*** 6.带进度条对话框*/protected void progressDialogBox(Activity activity){final ProgressDialog dialogBox = new ProgressDialog(activity);//水平样式dialogBox.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);dialogBox.setTitle("进度条对话框");dialogBox.setMessage("加载中~");dialogBox.show();//显示进度条进度new Thread(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stubfor (int j = 0; j <= 100; j++) {try {Thread.sleep(200);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}dialogBox.setProgress(j);}//加载完毕,退出对话框dialogBox.dismiss();}}).start();}/*** 7.自定义布局对话框*/protected void customLayoutDialogBox(final Activity activity){final AlertDialog.Builder dialogBox = new AlertDialog.Builder(activity);//创建一个view,并且将自定义布局对话框的布局加入view中View view = View.inflate(activity,R.layout.custom_layout,null);dialogBox.setView(view);final Dialog dialog = dialogBox.create();final EditText editText1 = view.findViewById(R.id.editText1);final EditText editText2 = view.findViewById(R.id.editText2);Button button1 = view.findViewById(R.id.button1);Button button2 = view.findViewById(R.id.button2);//设置监听器button1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(activity,"退出",Toast.LENGTH_SHORT).show();dialog.dismiss();}});button2.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(activity,"用户名:"+editText1.getText().toString()+" 密码:"+editText2.getText().toString(),Toast.LENGTH_SHORT).show();dialog.dismiss();}});dialog.show();}/*** 8.自定义对话框*/protected void customDialogBox(final Activity activity){final CustomDialogBox dialogBox = new CustomDialogBox(activity);dialogBox.setTitle("自定义对话框");dialogBox.setContent("你要离开吗?");dialogBox.setOnYesClick("确定", new CustomDialogBox.OnYesClickListener() {@Overridepublic void confirm() {Toast.makeText(activity,"点击了--确定--按钮",Toast.LENGTH_LONG).show();dialogBox.dismiss();}});dialogBox.setOnNoClick("取消", new CustomDialogBox.OnNoClickListener() {@Overridepublic void cancel() {Toast.makeText(activity,"点击了--取消--按钮",Toast.LENGTH_LONG).show();dialogBox.dismiss();}});dialogBox.show();}/*** 9.日期对话框*/@RequiresApi(api = Build.VERSION_CODES.N)protected void dateDialogBox(final Activity activity){//创建Calendar对象Calendar calendar = Calendar.getInstance();DatePickerDialog dialogBox = new DatePickerDialog(activity, new DatePickerDialog.OnDateSetListener() {@Overridepublic void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {//显示选择的日期/*这里请大家注意,为什么月份是(month+1),因为month代表的是上年底与现在相差的月份数,比如选择日期:1月15日,它与上年底相差的月份没有1个月,只有15天,那么month=0,当日期:2月15,它与上年底相差的日子为1个月15天,那么month=1。*/Toast.makeText(activity,year+"年 "+(month+1)+"月 "+dayOfMonth+"日",Toast.LENGTH_SHORT).show();}//刚打开日期对话框,默认选择当前日期}, calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),calendar.get(Calendar.DAY_OF_MONTH));//显示日期对话框dialogBox.show();}/*** 10.时间对话框*/@RequiresApi(api = Build.VERSION_CODES.N)protected void timeDialogBox(final Activity activity){//创建Calendar对象final Calendar calendar = Calendar.getInstance();TimePickerDialog dialogBox = new TimePickerDialog(activity, new TimePickerDialog.OnTimeSetListener() {@Overridepublic void onTimeSet(TimePicker view, int hourOfDay, int minute) {//显示选择的时间Toast.makeText(activity,hourOfDay+"点 "+minute+"分",Toast.LENGTH_SHORT).show();}},calendar.get(Calendar.HOUR),calendar.get(Calendar.MINUTE),true);//显示时间对话框dialogBox.show();}
}

2.通过new一个DialogBox实例,分别调用各种对话框,当点击了相应的按钮,就实现相应的对话框

package com.example.homeworkfour;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {//定义全局变量private Button button1, button2, button3, button4, button5, button6, button7,button8,button9,button10;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);final DialogBox dialogBox=new DialogBox();//绑定控件并为按钮设置监听器button1=findViewById(R.id.button1);button1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {dialogBox.ordinaryDialogBox(MainActivity.this);}});button2=findViewById(R.id.button2);button2.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {dialogBox.radioDialogBox(MainActivity.this);}});button3=findViewById(R.id.button3);button3.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {dialogBox.multipleDialogBox(MainActivity.this);}});button4=findViewById(R.id.button4);button4.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {dialogBox.listDialogBox(MainActivity.this);}});button5=findViewById(R.id.button5);button5.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {dialogBox.noProgressDialogBox(MainActivity.this);}});button6=findViewById(R.id.button6);button6.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {dialogBox.progressDialogBox(MainActivity.this);}});button7=findViewById(R.id.button7);button7.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {dialogBox.customLayoutDialogBox(MainActivity.this);}});button8=findViewById(R.id.button8);button8.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {dialogBox.customDialogBox(MainActivity.this);}});button9=findViewById(R.id.button9);button9.setOnClickListener(new View.OnClickListener() {@RequiresApi(api = Build.VERSION_CODES.N)@Overridepublic void onClick(View v) {dialogBox.dateDialogBox(MainActivity.this);}});button10=findViewById(R.id.button10);button10.setOnClickListener(new View.OnClickListener() {@RequiresApi(api = Build.VERSION_CODES.N)@Overridepublic void onClick(View v) {dialogBox.timeDialogBox(MainActivity.this);}});}
}

3.自定义对话框,就是利用重写Dialog实现自定义对话框

package com.example.homeworkfour;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.TextView;
public class CustomDialogBox extends Dialog {private TextView title, content;private Button confirm, cancel;private String titleStr, contentStr, confirmStr, cancelStr;private Context mContext;// 按钮监听器private OnNoClickListener onNoClickListener;private OnYesClickListener onYesClickListener;public CustomDialogBox(Context context) {super(context);this.mContext = context;}public CustomDialogBox(Context context, int theme) {super(context, theme);this.mContext = context;}@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);getWindow().requestFeature(Window.FEATURE_NO_TITLE);//使用自定义的布局setContentView(R.layout.custom_dialog);init();title.setText(titleStr);content.setText(contentStr);confirm.setText(confirmStr);cancel.setText(cancelStr);// 确认按钮confirm.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View arg0) {if (onYesClickListener != null) {onYesClickListener.confirm();}}});// 取消按钮cancel.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View arg0) {if (onNoClickListener != null) {onNoClickListener.cancel();}}});}/** 初始化控件*/private void init() {title = (TextView) findViewById(R.id.title);content = (TextView) findViewById(R.id.content);confirm = (Button) findViewById(R.id.confirm);cancel = (Button) findViewById(R.id.cancel);}/** 设置取消对话框的点击事件的监听接口*/public interface OnNoClickListener {public void cancel();}/** 设置确认对话框的点击事件的监听接口*/public interface OnYesClickListener {public void confirm();}/** 为外部设置监听部分*/public void setOnYesClick(String str, OnYesClickListener onYesClickListener) {if (str != null) {this.confirmStr = str;}this.onYesClickListener = onYesClickListener;}public void setOnNoClick(String str, OnNoClickListener onNoClickListener) {if (str != null) {this.cancelStr = str;}this.onNoClickListener = onNoClickListener;}/*** 为外界暴露方法,设置标题内容等*/public void setTitle(String str) {this.titleStr = str == null ? "" : str;}public void setContent(String str) {this.contentStr = str == null ? "" : str;}
}

4.主界面的布局

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"tools:context=".MainActivity"><Buttonandroid:id="@+id/button1"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_marginTop="2dp"android:text="普通对话框"android:textSize="15sp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /><Buttonandroid:id="@+id/button2"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_marginTop="5dp"android:text="单选对话框"android:textSize="15sp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/button1" /><Buttonandroid:id="@+id/button3"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_marginTop="5dp"android:text="多选对话框"android:textSize="15sp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/button2" /><Buttonandroid:id="@+id/button4"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_marginTop="5dp"android:text="列表对话框"android:textSize="15sp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/button3" /><Buttonandroid:id="@+id/button5"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_marginTop="5dp"android:text="不带进度条对话框"android:textSize="15sp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/button4" /><Buttonandroid:id="@+id/button6"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_marginTop="5dp"android:text="带进度条对话框"android:textSize="15sp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/button5" /><Buttonandroid:id="@+id/button7"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_marginTop="5dp"android:text="自定义布局对话框"android:textSize="15sp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/button6" /><Buttonandroid:id="@+id/button8"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_marginTop="5dp"android:text="自定义对话框"android:textSize="15sp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/button7" /><Buttonandroid:id="@+id/button9"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_marginTop="5dp"android:text="日期对话框"android:textSize="15sp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/button8" /><Buttonandroid:id="@+id/button10"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_marginTop="5dp"android:text="时间对话框"android:textSize="15sp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/button9" />
</androidx.constraintlayout.widget.ConstraintLayout>

5.自定义布局对话框的布局

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayoutxmlns: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"><TextViewandroid:id="@+id/message"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_marginStart="80dp"android:layout_marginLeft="80dp"android:layout_marginTop="40dp"android:text="请填写信息"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /><EditTextandroid:id="@+id/editText1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="50dp"android:layout_marginLeft="50dp"android:layout_marginTop="30dp"android:ems="10"android:hint="用户名"android:inputType="textEmailAddress"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/message" /><EditTextandroid:id="@+id/editText2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="50dp"android:layout_marginLeft="50dp"android:layout_marginTop="30dp"android:ems="10"android:hint="密码"android:inputType="textEmailAddress"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/editText1" /><Buttonandroid:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="60dp"android:layout_marginLeft="60dp"android:layout_marginTop="250dp"android:text="取消"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /><Buttonandroid:id="@+id/button2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="20dp"android:layout_marginLeft="20dp"android:layout_marginTop="250dp"android:text="确定"app:layout_constraintStart_toEndOf="@+id/button1"app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

6.自定义对话框的布局

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:id="@+id/relativeLayout"android:layout_width="match_parent"android:layout_height="match_parent" ><TextViewandroid:id="@+id/title"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="50dp"android:layout_marginLeft="50dp"android:layout_marginTop="48dp"android:text="TextView"android:textSize="25sp"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /><TextViewandroid:id="@+id/content"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="50dp"android:layout_marginLeft="50dp"android:layout_marginTop="30dp"android:text="TextView"android:textSize="20sp"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/title" /><Buttonandroid:id="@+id/cancel"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="30dp"android:layout_marginLeft="30dp"android:layout_marginTop="160dp"android:text="取消"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /><Buttonandroid:id="@+id/confirm"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="20dp"android:layout_marginLeft="20dp"android:layout_marginTop="160dp"android:text="确定"app:layout_constraintStart_toEndOf="@+id/cancel"app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

http://chatgpt.dhexx.cn/article/FleEWh95.shtml

相关文章

Android常用的几种对话框

1文本提示对话框 AlertDialog.Builder b new AlertDialog.Builder(this);//this为上下文&#xff0c;如果在本类里显示&#xff0c;通常使用this b.setTitle("标题");/对话框标题 b.setMessage("可能会删除某个文件");//提示文本 …

Android对话框的详细介绍(提示对话框,自定义对话框)

简介&#xff1a; 我们都知道在Android开发中&#xff0c;当我们的程序在与用户交互时&#xff0c;用户会得到一定的反馈&#xff0c;其中以对话框的形式的反馈还是比较常见的&#xff0c;接下来我们来介绍几种常见的对话框的基本使用。 前置准备&#xff1a;&#xff08;文章…

WinInet 和 WinHttp 有何区别?

背景 WinInet和WinHttp是windows平台下提供了两套独立的网络库&#xff0c;按照微软官方的说法&#xff0c; WinInet的优势在于client-端的应用&#xff0c;而WinHttp更适用于server-端编程。从名称上我们可以看出WinHttp在Http协议应用方面要比WinInet更加专业&#xff0c;Win…

使用WinHTTP与服务器通讯

WinHTTP 的工作流程如下 一.初始化WinHTTP 在与服务器交互之前, 必须用调用WinHttpOpen进行初始化,WinHttpOpen创建一个会话,并返回该会话的句柄,接着有了这个句柄, WinHttpConnect就能指定一个目标服务器 注意:调用了WinHttpConnect并不意味着和服务器建立了真正的连接 二.打…

使用c++ winhttp实现post请求

winhttp是windows网络库&#xff0c;要测试自己写的post请求是否有效&#xff0c;首先得在postman上面建立一个可用的接口。我的如下。 代码思路如下&#xff1a; 1、首先使用WinHttpCrackUrl拆解链接&#xff0c;后面会使用到拆解出来的信息。 2、再使用WinHttpOpen初始化 3、…

HTTP HTTPS POST GET(包含curl版本和winhttp两种实现)

玩过抓包&#xff0c;网络协议分析的朋友肯定都知道http https post get&#xff0c;web端和用户的交互主要是通过post get完成的。 今天带给大家的是C版本的http https get post,只会易语言的朋友请移步。 我这里有两种实现&#xff1a; 1&#xff1a;libcurl实现的CHttpClien…

C++用winhttp实现https访问服务器

由于项目升级&#xff0c;在数据传输过程中需要经过OAuth2.0认证&#xff0c;访问服务器需要https协议。 首先&#xff0c;实现C代码访问https 服务器&#xff0c;实现Get和post功能&#xff0c;在网上搜索一通&#xff0c;发现各种各样的都有&#xff0c;有的很简单&#xff0…

实现HTTP协议Get、Post和文件上传功能——使用WinHttp接口实现

在《使用WinHttp接口实现HTTP协议Get、Post和文件上传功能》一文中&#xff0c;我已经比较详细地讲解了如何使用WinHttp接口实现各种协议。在最近的代码梳理中&#xff0c;我觉得Post和文件上传模块可以得到简化&#xff0c;于是几乎重写了这两个功能的代码。因为Get、Post和文…

使用WinINet和WinHTTP实现Http访问

Http访问有两种方式&#xff0c;GET和POST&#xff0c;就编程来说GET方式相对简单点&#xff0c;它不用向服务器提交数据&#xff0c;在这个例程中我使用POST方式&#xff0c;提交数据value1与value2&#xff0c;并从服务器得到他们的和&#xff08;value1 value2&#xff09;…

WinHttp.WinHttpRequest.5.1

Set oHttp CreateObject ( " WinHttp.WinHttpRequest.5.1 " )oHttp.Option( 6 ) 0 禁止自动Redirect&#xff0c;最关键的 oHttp.SetTimeouts 9999999 , 9999999 , 9999999 , 9999999 设置超时&#xff5e;和ServerXMLHTTP组件一样 oHttp.Open " GET &q…

Tinyhttpd for Windows

TinyHTTPd forWindows 前言 TinyHTTPd是一个开源的简易学习型的HTTP服务器&#xff0c;项目主页在&#xff1a;http://tinyhttpd.sourceforge.net/&#xff0c;源代码下载&#xff1a;https://sourceforge.net/projects/tinyhttpd/&#xff0c;因为是学习型的代码,已经有好多年…

windows安装http测试服务

祝您身体健康&#xff0c;前程似锦&#xff0c;小弟期待文章对您有帮助&#xff0c;也期待您的打赏: 目录 1. 下载 HttpMockServer工具 2. windows10 安装jdk1.8 3. jdk按照上面配置完环境变量后打开cmd&#xff0c;运行 4. 准备测试的响应数据 text.txt,内容如下: 5. 会弹…

C++ winhttp 实现文件下载器

本篇内容讲述 C winHttp 实现下载器的简单 demo&#xff0c;使用了 WinHttpOpen、WinHttpConnect、WinHttpOpenRequest、WinHttpSendRequest、WinHttpReceiveResponse、WinHttpQueryDataAvailable、WinHttpReadData、WinHttpCloseHandle 等函数。 版权声明&#xff1a;本文为C…

WinHTTP教程

最近有些忙&#xff0c;也没更新BLOG&#xff0c;这几天在捣鼓一个小玩意要用到WinHTTP API&#xff0c;发现资料很少&#xff0c;而且大都是些MFC封装的例子&#xff0c;看得我是一个头几个大。就把自己关于WinHTTP的学习总结了一下&#xff0c;仅供参考&#xff0c;各人理解可…

WinHttp c++ 介绍及应用

一、HTTP协议介绍 http协议的底层协议是TCP协议。TCP协议是基于数据流的传输方式。其又叫做“超文本传输协议”&#xff0c;为什么呢&#xff0c;因为它是将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器&#xff0c;通过因特网传送万维网文档的数据传送协议。 1…

WinHTTP

记录WinHTTP学习过程 一、什么是WinHTTP&#xff1f; WinHTTP的全称是Microsoft Windows HTTP Services&#xff0c; 它提供给开发者一个HTTP客户端应用程序接口(API)&#xff0c;通过这种API借助HTTP协议给其他的HTTP服务器发送请求。 二、WinHTTP访问流程 如上图&#xff0c;…

Java递归算法计算5的阶乘

递归 package com.etime.test019; //计算5的阶乘&#xff1b; public class Test15 {public static void main(String[] args) {//调用test1方法&#xff0c;且只调用一次int i test1(5);System.out.println(i);}//定义一个int类型返回值的静态方法public static int test1(i…

Java算法递归与递推

Java算法----递归与递推 递推实现递推思想递归实现递归思想递归实现递推思想递推实现递归思想四种方法的特点思维拓展 问题&#xff1a;给你一个整数n&#xff0c;如果n是奇数&#xff0c;就进行运算nn*31&#xff0c;如果n是偶数&#xff0c;就进行运算nn/2&#xff0c;直到n等…

Java开发 | 数据结构和算法之——递归算法

著名的Pascal之父——Nicklaus Wirth(沃斯)让他获得图灵奖的一句话就是他提出的著名公式:“程序=数据结构+算法”,这个公式对计算机科学的影响类似于爱因斯坦的质能方程在物理界的影响。 因此可以看出来数据结构和算法在我们开发程序中有多么的重要了,下面我们来简单认识…

java中递归算法的理解

Coding多了&#xff0c;递归算法是非常常见的&#xff0c;最近我一直在做树形结构的封装&#xff0c;所以更加的离不开递归算法。所以今天就简单说一下这个递归算法&#xff0c;用java实现一个非常经典的递归实例。 递归算法&#xff0c;其实说白了&#xff0c;就是程序的自身调…