基于Java--获取城市天气与给手机发送验证码--HTTP协议实践

一、认识网址

网址的组成:协议://域名:端口号/虚拟路径?参数列表#锚点

协议: 用于计算机与计算机之间交流的协议,用于传输速率,传输编码,出错的控制等。
常用协议:
http:超文本传输协议,默认端口号:80
https:安全超文本传输协议,默认端口号:443
域名:ip地址的别名。ip地址是计算机在互联网中的唯一表示,192.168.1.1
端口号:范围:0-65535,其中0~1023有特殊含义。
虚拟路径:通过路径的方式,来管理服务器中的文件资源。
参数列表:向服务器发送的数据,每一个参数都是一个键值对,键和值之间通过=号连接,多个键值对之间通过&分割。

二、获取城市的天气预报信息

package tianqi;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;

public class tianqi_1 {
 public static void main(String args[]) throws IOException
{
	URL url = new URL("https://api.jisuapi.com/iqa/query?appkey=62958a3a6ef3c56d&question=重庆天气");
	URLConnection conn = url.openConnection();
	InputStream is = conn.getInputStream();
	BufferedReader br = new BufferedReader(new InputStreamReader(is));
	String text = br.readLine();
	System.out.println(text);
	br.close();
}
}

效果图
在这里插入图片描述
这个代码呢。只是能获取指定城市的天气,不能任意获取。

三、给指定手机号码发送验证码

同样新建Java工程,在包内新建class,写入代码

package tianqi;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;

public class tianqi_1 {
 public static void main(String args[]) throws IOException
{
	URL url = new URL("https://itdage.com/kkb/kkbsms?key=xzk&number=15086842152&code=520520");
	URLConnection conn = url.openConnection();
	InputStream is = conn.getInputStream();
	BufferedReader br = new BufferedReader(new InputStreamReader(is));
	String text = br.readLine();
	System.out.println(text);
	br.close();
}
}

效果如图,指定手机号,即number=后面的号码会收到短信
在这里插入图片描述
短信收到的消息图:
在这里插入图片描述
该方式是利用已经建好的API进行调用实现的。

四、实现自定义短信内容的短信验证码发送

想实现此功能需要申请短信服务。 可以使用阿里云提供的短信服务,但是要通过短信签名请求的审核才行,否则就无法实现该服务的使用。
也可以使用下面这个工具
链接:http://www.smschinese.cn/api.shtml

  1. 注册一个账号
    在这里插入图片描述
  2. 登录
    在这里插入图片描述
  3. 相关代码
    ①下载相关的jar包,并导入到工程中
    jar下载地址:
    http://www.smschinese.cn/down/commons-codec-1.4.jar
    http://www.smschinese.cn/down/commons-httpclient-3.1.jar
    http://www.smschinese.cn/down/commons-logging-1.1.1.jar
    ②创建一个类(包含main函数)
    ③添加代码
import java.io.UnsupportedEncodingException;
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;
public class SendMsg_webchinese {
	public static void main(String[] args)throws Exception
	{
	HttpClient client = new HttpClient();
	PostMethod post = new PostMethod("http://gbk.api.smschinese.cn");
	post.addRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=gbk");//在头文件中设置转码
	NameValuePair[] data ={ 
				new NameValuePair("Uid", "本站用户名"),//Uid指的是注册时的用户名
				new NameValuePair("Key", "接口安全秘钥"),
				new NameValuePair("smsMob","手机号码"),//发送短信的目的手机号
				new NameValuePair("smsText","验证码:8888")};//对应短信内容
	post.setRequestBody(data);
	client.executeMethod(post);
	Header[] headers = post.getResponseHeaders();
	int statusCode = post.getStatusCode();
	System.out.println("statusCode:"+statusCode);
	for(Header h : headers)
	{
	System.out.println(h.toString());
	}
	String result = new String(post.getResponseBodyAsString().getBytes("gbk"));
	System.out.println(result); //打印返回消息状态
	post.releaseConnection();
	}
}

接口安全密钥的查看(默认一般相同)
在这里插入图片描述
如果后面遇到一些错误,可能是跟jdk版本有问题
下面这是修改jdk版本的方法:
https://blog.csdn.net/zeal9s/article/details/85090545
如果还有其他问题,额,加油,自己应该能找办法解决🐱‍🏍🐱‍🏍。

参考

https://www.cnblogs.com/zhukaixin/p/9149005.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值