Java实现短信发送
Posted 萧子易
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java实现短信发送相关的知识,希望对你有一定的参考价值。
首先,我们要实现Java短信发送功能需要去申请第三方短信接口,以阿里云为例
点击跳转
在API市场中找到短信验证码接口:
我们可以先选择免费试用来测试:
点击立即购买后可前往控制台查看:
OK,一切就绪后我们开始测试使用。
首先我们先回到商品详情页,在商品详情页下面,说明了这个接口的调用地址以及请求参数等:
接下来我们通过实例来调用接口进行测试:
1、加入相关依赖
具体可参考:相关依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.15</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.2.1</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-util</artifactId>
<version>9.3.7.v20160115</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.5</version>
<scope>test</scope>
</dependency>
2、创建HttpUtils.java类
HttpUtils.java类官方也已经帮我们封装好了,我们可以直接前往github下载,点击跳转
这里就直接把代码放上了
package com.aliyun.api.gateway.demo.util;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import org.apache.commons.lang.StringUtils;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpDelete;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.entity.ByteArrayEntity;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
public class HttpUtils
/**
* get
*
* @param host
* @param path
* @param method
* @param headers
* @param querys
* @return
* @throws Exception
*/
public static HttpResponse doGet(String host, String path, String method,
Map<String, String> headers,
Map<String, String> querys)
throws Exception
HttpClient httpClient = wrapClient(host);
HttpGet request = new HttpGet(buildUrl(host, path, querys));
for (Map.Entry<String, String> e : headers.entrySet())
request.addHeader(e.getKey(), e.getValue());
return httpClient.execute(request);
/**
* post form
*
* @param host
* @param path
* @param method
* @param headers
* @param querys
* @param bodys
* @return
* @throws Exception
*/
public static HttpResponse doPost(String host, String path, String method,
Map<String, String> headers,
Map<String, String> querys,
Map<String, String> bodys)
throws Exception
HttpClient httpClient = wrapClient(host);
HttpPost request = new HttpPost(buildUrl(host, path, querys));
for (Map.Entry<String, String> e : headers.entrySet())
request.addHeader(e.getKey(), e.getValue());
if (bodys != null)
List<NameValuePair> nameValuePairList = new ArrayList<NameValuePair>();
for (String key : bodys.keySet())
nameValuePairList.add(new BasicNameValuePair(key, bodys.get(key)));
UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(nameValuePairList, "utf-8");
formEntity.setContentType("application/x-www-form-urlencoded; charset=UTF-8");
request.setEntity(formEntity);
return httpClient.execute(request);
/**
* Post String
*
* @param host
* @param path
* @param method
* @param headers
* @param querys
* @param body
* @return
* @throws Exception
*/
public static HttpResponse doPost(String host, String path, String method,
Map<String, String> headers,
Map<String, String> querys,
String body)
throws Exception
HttpClient httpClient = wrapClient(host);
HttpPost request = new HttpPost(buildUrl(host, path, querys));
for (Map.Entry<String, String> e : headers.entrySet())
request.addHeader(e.getKey(), e.getValue());
if (StringUtils.isNotBlank(body))
request.setEntity(new StringEntity(body, "utf-8"));
return httpClient.execute(request);
/**
* Post stream
*
* @param host
* @param path
* @param method
* @param headers
* @param querys
* @param body
* @return
* @throws Exception
*/
public static HttpResponse doPost(String host, String path, String method,
Map<String, String> headers,
Map<String, String> querys,
byte[] body)
throws Exception
HttpClient httpClient = wrapClient(host);
HttpPost request = new HttpPost(buildUrl(host, path, querys));
for (Map.Entry<String, String> e : headers.entrySet())
request.addHeader(e.getKey(), e.getValue());
if (body != null)
request.setEntity(new ByteArrayEntity(body));
return httpClient.execute(request);
/**
* Put String
* @param host
* @param path
* @param method
* @param headers
* @param querys
* @param body
* @return
* @throws Exception
*/
public static HttpResponse doPut(String host, String path, String method,
Map<String, String> headers,
Map<String, String> querys,
String body)
throws Exception
HttpClient httpClient = wrapClient(host);
HttpPut request = new HttpPut(buildUrl(host, path, querys));
for (Map.Entry<String, String> e : headers.entrySet())
request.addHeader(e.getKey(), e.getValue());
if (StringUtils.isNotBlank(body))
request.setEntity(new StringEntity(body, "utf-8"));
return httpClient.execute(request);
/**
* Put stream
* @param host
* @param path
* @param method
* @param headers
* @param querys
* @param body
* @return
* @throws Exception
*/
public static HttpResponse doPut(String host, String path, String method,
Map<String, String> headers,
Map<String, String> querys,
byte[] body)
throws Exception
HttpClient httpClient = wrapClient(host);
HttpPut request = new HttpPut(buildUrl(host, path, querys));
for (Map.Entry<String, String> e : headers.entrySet())
request.addHeader(e.getKey(), e.getValue());
if (body != null)
request.setEntity(new ByteArrayEntity(body));
return httpClient.execute(request);
/**
* Delete
*
* @param host
* @param path
* @param method
* @param headers
* @param querys
* @return
* @throws Exception
*/
public static HttpResponse doDelete(String host, String path, String method,
Map<String, String> headers,
Map<String, String> querys)
throws Exception
HttpClient httpClient = wrapClient(host);
HttpDelete request = new HttpDelete(buildUrl(host, path, querys));
for (Map.Entry<String, String> e : headers.entrySet())
request.addHeader(e.getKey(), e.getValue());
return httpClient.execute(request);
private static String buildUrl(String host, String path, Map<String, String> querys) throws UnsupportedEncodingException
StringBuilder sbUrl = new StringBuilder();
sbUrl.append(host);
if (!StringUtils.isBlank(path))
sbUrl.append(path);
if (null != querys)
StringBuilder sbQuery = new StringBuilder();
for (Map.Entry<String, String> query : querys.entrySet())
if (0 < sbQuery.length())
sbQuery.append("&");
if (StringUtils.isBlank(query.getKey()) && !StringUtils.isBlank(query.getValue()))
sbQuery.append(query.getValue());
if (!StringUtils.isBlank(query.getKey()))
sbQuery.append(query.getKey());
if (!StringUtils.isBlank(query.getValue()))
sbQuery.append("=");
sbQuery.append(URLEncoder.encode(query.getValue(), "utf-8"));
if (0 < sbQuery.length())
sbUrl.append("?"
参考技术A
你用JAVA开放的平台需要有短信接口,和短信群发平台公司对接短信实现触发自动下发验证码短信的功能,开户对接好,准备好足够短信条数就可以了,正规短信群发平台都会提供免费的对接文档给你对接,你做技术一看就明白的
以上是关于Java实现短信发送的主要内容,如果未能解决你的问题,请参考以下文章
java socket技术 客户端实现不发送请求给服务端但是一直接收服务端发来的数据