基于JAVA的短信接口调用代码实例

合集下载

CMPP2.0实现长短信 java源码实例

CMPP2.0实现长短信 java源码实例
28.
29.byte[]msgContent;//分割后的每条短信
30.for(inti=0;i< messageUCS2Count;i++) {
31.tp_udhiHead[6] = (byte) (i+1);//设置分段标志
32.if(i!= messageUCS2Count -1) {//不为最后一条
86.
87.for(byte[] ucs2Msg : ucs2msgList) {//逐条发送
88.
89.submit.setMsgContent(newString(ucs2Msg));
90.submit.setMsgFmt(8);//长短信只能用ucs2格式
91./*发送信息*/
92.out.write(CMPPUtil.getCMPPSubmit(submit));
79.
80./*配置文件中TP_udhi的值设置为1才进行长短信切片处理*/
81.
82.if("1".equals(CMPPKey.getProValue("TP_udhi"))
83.&& messageUCS2.length >140) {
84.
85.ArrayList<byte[]> ucs2msgList = getUCS2MsgContents(messageUCS2);
69.submit.setMsgContent(mt.getMsgContent());
70.submit.setMsgLevel(mt.getMsgLevel());//移动未规定范围,暂用0-2
71.if(mt.getFormat() !=null&& !"".equals(mt.getFormat().trim())) {

java调用外部接口推送数据的方法

java调用外部接口推送数据的方法

java调用外部接口推送数据的方法在使用Java调用外部接口推送数据时,有几种常见的方法可以实现。

以下是其中一种方法的示例:首先,你需要使用Java中提供的相关类和方法来进行HTTP请求。

你可以使用Java的HTTP客户端类,例如HttpClient或HttpURLConnection,这些类可以实现HTTP请求和接收响应。

接下来,你需要构建HTTP请求的参数和数据。

通常,你可以使用JSON或XML格式来传递数据。

你可以使用Java中的相关类来构建请求的数据,并将其转换为所需的格式。

然后,你需要设置HTTP请求的头部信息。

这包括设置请求方法(POST、GET等),请求的内容类型(application/json、application/xml等)以及其他必要的头部信息。

接下来,你可以发送HTTP请求并获取服务器的响应。

你可以使用Java中的方法将请求发送到外部接口,并使用相应的方法获取服务器的响应。

你可以根据需要处理响应的结果。

最后,你需要处理服务器的响应数据。

根据外部接口返回的数据格式,你可以使用相关的Java类进行解析,并根据需要进行后续的处理操作。

需要注意的是,调用外部接口时,你需要确保网络连接的可用性,并正确处理可能出现的异常情况。

你可以使用Java中的异常处理机制来捕获和处理可能出现的异常。

总结起来,使用Java调用外部接口推送数据的方法包括构建HTTP请求参数和数据、设置请求的头部信息、发送HTTP请求、获取服务器的响应并处理响应数据。

通过合理地使用Java的相关类和方法,你可以很容易地实现这个过程。

java调取接口的方法

java调取接口的方法

java调取接口的方法Java调取接口的方法在Java编程中,接口(Interface)是一种特殊的抽象类,它定义了一组方法的签名,但没有提供实际的方法实现。

接口可以被类实现(implements),这样就可以使用接口中定义的方法。

本文将详细介绍如何使用Java调用接口中的方法,提供一步一步的示例。

为了能够更好地理解Java调用接口的方法,我们先来了解一下接口的基本概念和使用方法。

接口是Java中的一种重要概念,它提供了一种约束和规范,用于实现类之间的通信和交互。

接口可以定义一组相关的方法,这些方法必须由实现类来具体实现。

接口中的方法默认是抽象的,不提供具体的实现。

通过实现接口,类可以获得接口中定义的方法,并根据具体业务需要进行实现。

下面是一个简单的示例,展示了如何定义和实现一个接口。

java定义一个接口public interface Animal {void sound(); 抽象方法}实现接口public class Dog implements Animal {@Overridepublic void sound() {System.out.println("汪汪汪");}}在上面的示例中,我们定义了一个接口Animal,并在其中声明了一个抽象方法sound。

接着,我们通过实现类Dog来实现这个接口,并提供具体的实现。

实现类需要使用关键字implements来实现接口,并通过@Override注解来重写接口中的抽象方法。

在实际应用中,我们可以通过调用实现类中的方法来调用接口中的方法。

下面是一个使用实例:javapublic class Main {public static void main(String[] args) {Animal dog = new Dog();dog.sound(); 调用接口中的方法}}在上面的示例中,我们创建了一个Dog实例,并将其赋值给Animal类型的变量dog。

java调用api接口实例

java调用api接口实例

java调用api接口实例# 2. 使用JAVA调用API的实例## 2.1 简介API(Application Programming Interface),即应用程序接口,是一种特定的接口,它允许第三方软件(如Java)与另一个软件系统进行交互,以便更好地提供服务。

Java将API作为类库,可帮助开发人员更容易的进行开发。

## 2.2 实现### 2.2.1 准备工作首先,我们需要准备基本的环境:- Java开发环境(如Eclipse)- 用于调用API的第三方jar包### 2.2.2 使用API使用API的步骤一般如下:- 加载API:将jar包添加到Java项目中,使用Java类可以访问API。

- 初始化:初始化API的配置文件,设置必要的参数,以便API 可以正常工作。

- 调用API:通过调用API中的方法,获取要求的功能,完成任务。

### 2.2.3 编写实例下面是一个使用API的实例,以调用Amazon S3(Simple StorageService)的API进行数据处理。

```javapackage com.example.s3;import com.amazonaws.auth.AWSStaticCredentialsProvider; import com.amazonaws.auth.BasicAWSCredentials;import com.amazonaws.regions.Regions;import com.amazonaws.services.s3.AmazonS3;import com.amazonaws.services.s3.AmazonS3ClientBuilder; public class S3Example {// 访问keyprivate static final String ACCESS_KEY = 'XXXXXXXX';// 密钥private static final String SECRET_KEY = 'XXXXXXXX';public static void main(String[] args) {// 获取S3客户端AmazonS3 s3Xclient = getS3Client();// 使用客户端进行操作doSomething(s3Xclient);}// 获取S3客户端private static AmazonS3 getS3Client() {// 创建认证信息BasicAWSCredentials awsCreds = new BasicAWSCredentials(ACCESS_KEY, SECRET_KEY);// 设置区域AWSCredentialsProvider awsCredsProvider = new AWSStaticCredentialsProvider(awsCreds);// 创建S3客户端AmazonS3 s3Client = AmazonS3ClientBuilder.standard().withCredentials(awsCredsProvider).withRegion(_EAST_1).build();return s3Client;}// 使用S3客户端private static void doSomething(AmazonS3 s3Client) {// TODO// 使用API调用S3相关的操作,如上传文件,下载文件,列出bucket等}}```该实例使用了Amazon S3的API,读取了访问key和密钥的信息,调用了接口获取S3客户端,并通过调用`doSomething()`方法实现了对S3的操作,如上传文件,下载文件,列出bucket等。

java实现基于SGIP协议开发联通短信的方法

java实现基于SGIP协议开发联通短信的方法

java实现基于SGIP协议开发联通短信的⽅法本⽂实例讲述了java实现基于SGIP协议开发联通短信的⽅法。

分享给⼤家供⼤家参考。

具体如下:近段时间,由于公司的业务需要,开发出了联通短信.此⽂章的编写也是根据⽹上的⼀些⽰例来完成的.闲话少说,下⾯来看代码:(运⾏此程序的时候需要导⼊华为的开发包,此包可以到⽹上下载)下⾏:public class Mt {private static String SPNumber = "**********";//接⼊号码private static String ChargeNumber = "000000000000000000000";// 计费号码,⽩名单private static String ServiceType = "";//服务类型private static String host = "***.***.***.***";// 主机名,⽹关IPprivate static int port = ****;// 端⼝号private static String CorpId = "*****";// 企业代码private static String login_Name = "**";// 登陆名private static String login_PassWord = "***";// 登陆密码public static void main(String[] args) throws UnsupportedEncodingException {int srcnode = new BigInteger("*******").intValue();//源节点编号(nodeid),这⼀步⾮常重要,华为包中,该字段类型为int,⽽接⼊协议中要求在企业代码前加上30000,这样就超过了int的取值范围,所以需要⽤BigInteger转⼀下就可以了 Args argstr = new Args();//设定连接参数argstr.set("host", host);argstr.set("port", port);argstr.set("transaction-timeout", 10);// 操作超时时间(单位:秒)argstr.set("read-timeout", 15);// 物理连接读操作超时时间(单位:秒)argstr.set("source-addr", srcnode);// SP…ID(最⼤为六位字符)argstr.set("login-name", login_Name);argstr.set("login-pass", login_PassWord);argstr.set("debug", "false");// 连接登陆SGIPSMProxy sgipsmp = new SGIPSMProxy(argstr);// 这⾥连接到短信息⽹关try {//connect表⽰向SMG登陆,登录名与密码分别是SMG向SP分配的⽤户名与密码,调⽤这个接⼝⽅法,向SMG发送Bind命令消息。

CMPP2.0实现长短信 JAVA源码实例

CMPP2.0实现长短信 JAVA源码实例

97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. } } }
out.write(CMPPUtil.getCMPPSubmit(submit)); out.flush(); return submit.getSequenceID(); } catch (IOException e) { closeSocket(); throw e; } catch (Exception e) { throw e;
Java 代码 1. /** 2. 3. 4. 5. 6. 7. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 2 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. } 44. 45. /** 46. * 拼接头尾 47. * } return ucs2msgList; } } else { msgContent = byteAdd(tp_udhiHead, messageUCS2, i * (maxMessageLen - 7), messageUCS2Len); ucs2msgList.add(msgContent); byte[] msgContent;// 分割后的每条短信 for (int i = 0; i < messageUCS2Count; i++) { tp_udhiHead[6] = (byte) (i + 1); // 设置分段标志 if (i != messageUCS2Count - 1) {// 不为最后一条 msgContent = byteAdd(tp_udhiHead, messageUCS2, i * (maxMessageLen - 7), (i + 1) * (maxMessageLen - 7)); ucs2msgList.add(msgContent); tp_udhiHead[2] = 0x04; // 表示剩余协议头的长度 // tp_udhiHead[3] //同一批短信的标志 // tp_udhiHead[4] //同一批短信的标志 tp_udhiHead[5] = (byte) messageUCS2Count; tp_udhiHead[6] = 0x01;// 默认为第一条 // 长短信 messageUCS2Count = messageUCS2Len / (maxMessageLen - 7) + 1; byte[] tp_udhiHead = new byte[7]; Random random = new Random(); random.nextBytes(tp_udhiHead);// 为了随机填充第 4、5 个字段 tp_udhiHead[0] = 0x06; // 表示剩余协议头的长度 tp_udhiHead[1] = 0x08;// 这个值在 GSM03.40 规范 9.2.3.24.1 中规定,表示随后的这批超长短信的标识位长度为 ArrayList<byte[]> ucs2msgList = new ArrayList<byte[]>(); int messageUCS2Len = messageUCS2.length; // 短信字节数 int maxMessageLen = 140; // 标准短信最大字节数 int messageUCS2Count;// 短信分段数 * 为长短信获取短信内容 增加 TP_udhi 协议头 * 1.系统设置为发送短短信时直接获取短信实体的短信内容。TP_udhi=0 * 2.系统设置为发送长短信时按照长短信协议分段在每段前增加 udhiHead。TP_udhi=1 * 3.系统采用 7 个字节的 TP_udhi 协议头(2 字节短信标志,2 的 32 次方内的随机数,但也有可能产生相同标志) * @author Aaron */ thyList<byte[]> getUCS2MsgContents(byte[] messageUCS2)

广东电信短信接入API使用手册(JAVA接口)

广东电信短信接入API使用手册(JAVA接口)

中国电信股份有限公司广东互联网及增值业务运营中心2009年10月目 录一、引言 (3)1.1 编写目的 (3)1.2 背景说明 (3)1.3 术语定义 (3)二、概述 (4)2.1 接口功能 (4)2.2 接口组成 (4)三、接口介绍 (5)3.1 网络结构 (5)3.2 运行环境 (6)3.3连接方式 (6)3.4开发接口函数使用 (6)3.4.1 接口函数说明 (6)3.4.2 接口函数调用流程图 (6)3.4.3 SmsClient类 (7)3.4.3.1 Login (7)3.4.3.2 SendSms (8)3.4.3.3 SendLongSms (8)3.4.3.4 RecvSms (9)3.4.3.5 RecvSmsReport (9)3.4.3.6 Disconnect (10)四、部分SMGP常见错误代码及短信状态 (10)4.1常见错误代码含义,其它的请参考SMGP标准协议 (10)4.2常见短信状态定义,其它的请参考SMGP标准协议 (11)一、引言1.1 编写目的广东电信提供了强大的短信接入机制。

本手册用于指导客户利用广东电信提供的短信接口进行其他需要短信功能的新系统开发或原有系统的短信功能扩展。

本手册的阅读对象为需要采用广东电信短信接入API完成客户开发的设计人员与编码人员。

1.2 背景说明本手册适用于广东电信SMGP协议(V3.0.2)短信网关接入。

1.3 术语定义广东电信SMGP协议 全称“广东电信短消息网关协议SMGP”,本文特指其V3.0.2版本,集团客户需接入广东电信短信网关时,必须使用此协议进行程序开发,本文中简称“SMGP”或“SMGP协议”。

MT短信 通过短信接口发往手机终端的短信。

MO短信 从手机终端发往短信接口接收队列的短信。

短信回执 有时也称“状态报告”,对于MT 短信,手机终端收到后会返回短信回执给短信接口。

回执包含MT 短信是否成功提交到特定手机终端的信息。

使用java发送短信和邮件

使用java发送短信和邮件

使⽤java发送短信和邮件(1)发送短信1.1在中国⽹建SMS上注册⼀个⽤户名,并获取短信密钥(⾮登录密码)1.2代码import java.io.IOException;import mons.httpclient.Header;import mons.httpclient.HttpClient;import mons.httpclient.HttpException;import ValuePair;import mons.httpclient.methods.PostMethod;public class SendMessage {/*** @param args* @throws IOException* @throws HttpException*/public static void main(String[] args) throws HttpException, IOException {HttpClient client=new HttpClient();PostMethod post=new PostMethod("");//在头⽂件中设置转码post.addRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=gbk");NameValuePair[] data={new NameValuePair("Uid","⽹建注册⽤户名"),new NameValuePair("Key","短信密钥"),new NameValuePair("smsMob","接收号码"),new NameValuePair("smsText","短信内容")};post.setRequestBody(data);client.executeMethod(post);Header[] headers=post.getRequestHeaders();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();}1.3注意需要引⼊包:commons-logging-1.1.1.jar、commons-httpclient-3.1.jar、commons-codec-1.4.jar1.4StatusCode说明:短信发送后返回值说 明-1没有该⽤户账户-2接⼝密钥不正确不是账户登陆密码-21MD5接⼝密钥加密不正确-3短信数量不⾜-11该⽤户被禁⽤-14短信内容出现⾮法字符-4⼿机号格式不正确-41⼿机号码为空-42短信内容为空-51短信签名格式不正确接⼝签名格式为:【签名内容】-6IP限制⼤于0短信发送数量2、发邮件2.1smtp验证类import javax.mail.Authenticator;import javax.mail.PasswordAuthentication;public class SmtpAuthenticator extends Authenticator {String username=null;String password=null;public SmtpAuthenticator(String name,String password) {super();ername=name;this.password=password;}public PasswordAuthentication getPasswordAuthentication(){return new PasswordAuthentication(ername, this.password);}}2.2发邮件的⼯具类import java.util.Date;import java.util.Properties;import javax.activation.DataHandler;import javax.activation.FileDataSource;import javax.mail.Authenticator;import javax.mail.Multipart;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeBodyPart;import javax.mail.internet.MimeMessage;import javax.mail.internet.MimeMultipart;import javax.mail.internet.MimeUtility;public class JavaMailSendUtil {public void sendMail(String subject,String from,String[] to,String test,String[] filenames,String mineType){try {Properties props=new Properties();String smtp="";//设置发送邮件所⽤到的smtpString servername="188********@";String serverpassword="************";Session mailSession=null;MimeMessage mimeMsg=null;props=ng.System.getProperties();props.put("mail.smtp.host", smtp);//设置SMTP主机props.put("mail.smtp.auth", "true");//是否到服务器⽤户名和密码验证//到服务器验证发送的⽤户名和密码是否正确SmtpAuthenticator myEmailAuther=new SmtpAuthenticator(servername, serverpassword);//设置邮件会话注意这⾥讲认证信息放进了Session的创建参数⾥mailSession=javax.mail.Session.getInstance(props,(Authenticator)myEmailAuther);//设置传输协议javax.mail.Transport transport=mailSession.getTransport("smtp");//设置from、to等信息mimeMsg=new javax.mail.internet.MimeMessage(mailSession);if(from!=null&&!from.equals("")){InternetAddress sendFrom=new InternetAddress(from);mimeMsg.setFrom(sendFrom);//设置发送⼈地址}InternetAddress[] sendTo=new InternetAddress[to.length];for(int i=0;i<to.length;i++){System.out.println("发送到:"+to[i]);sendTo[i]=new InternetAddress(to[i]);}mimeMsg.setRecipients(javax.mail.internet.MimeMessage.RecipientType.TO, sendTo); mimeMsg.setSubject(subject,"gb2312");MimeBodyPart messageBodyPart1=new MimeBodyPart();messageBodyPart1.setContent(test,mineType);//附件传输格式Multipart multipart=new MimeMultipart();multipart.addBodyPart(messageBodyPart1);for(int i=0;i<filenames.length;i++){MimeBodyPart messageBodyPart2=new MimeBodyPart();String filename=filenames[i].split(";")[0];System.out.println(filename);String displatname=filenames[i].split(";")[1];//得到数据源FileDataSource fds=new FileDataSource(filename);//BodyPart添加附件本⾝messageBodyPart2.setDataHandler(new DataHandler(fds));//BodyPart添加附件⽂件名messageBodyPart2.setFileName(MimeUtility.encodeText(displatname));multipart.addBodyPart(messageBodyPart2);}mimeMsg.setContent(multipart);//设置信件头的发送⽇期mimeMsg.setSentDate(new Date());mimeMsg.saveChanges();//发送邮件Transport.send(mimeMsg);transport.close();System.out.println("消息发送成功");} catch (Exception e) {// TODO: handle exception}}}2.3测试类public class TestMailSend {/*** @param args*/public static void main(String[] args) {String title="测试邮件";String from="188********@";String sendTo[]={"1245226995@","jlsong186@"};String content="just test java send mail<br><a href=\"\">My blog</a>"; String fileNames[]={"F:\\068.JPG;068.JPG"};JavaMailSendUtil test=new JavaMailSendUtil();try {test.sendMail(title, from, sendTo, content, fileNames, "text/html;charset=gb2312");} catch (Exception e) {e.printStackTrace();}}}。

短消息代理(CMPP30 SMProxy)使用说明书

短消息代理(CMPP30 SMProxy)使用说明书

第一章概述1 差异描述SMProxy30的使用方法与SMProxy基本相同,主要差别:1、对ISMG主动下发的消息的处理,接收的消息类型使用CMPP30DeliverMessage类来处理。

2、CMPP30DeliverMessage相对CMPPDeliverMessage增加了如下方法:a) public int getSrcterminalType() //返回源终端号码类型b) public String getLinkID() //返回LinkID另外,删除了原public String getReserve()方法。

3、构造下发短信响应消息时,使用CMPP30DeliverRepMessage类,其中result字段的有效取值范围扩展为[0, 2147483647]。

4、构造向SMC提交的短消息包时,使用CMPP30SubmitMessage类。

相对于CMPPSubmitMessage,该类的构造方法增加了两个参数:a) int fee_Terminal_Type //被计费用户的号码类型b) int dest_Terminal_Type //接收业务的用户号码类型c) string LinkID //点播业务用的LinkID另外,删除了原String reserve参数。

5、对提交请求后收到的响应消息进行处理,使用CMPP30SubmitRepMessage类。

2 产品概述SMProxy30是在原有的SMProxy上增加的符合CMPP3.0协议的接口,可以同时满足Unix和WINDOW NT平台的使用。

SMProxy30与ISMG建立TCP连接进行通信,并负责短消息发送和接收、维护与ISMG的握手、断连重连等;SMProxy30提供客户API接口函数,包括登录PROXY、退出PROXY、发送短消息、接受短消息、接受响应信息、查询短消息信息、取消短消息等。

SMProxy30支持多线程并发使用发送短消息,SMProxy30和ISMG之间使用的通信协议是CMPP协议。

java api post 接口调用实例

java api post 接口调用实例

一、介绍随着互联网的发展,Web开发变得越来越重要。

作为一种常用的编程语言,Java在Web开发中扮演着重要的角色。

Java提供了丰富的API,使得开发人员可以轻松地进行接口调用。

本文将介绍如何使用Java API进行Post接口调用的实例。

二、前提条件在正式开始之前,确保已经安装了Java开发环境,并熟悉了Java 的基本语法和常用API。

三、准备工作在进行Post接口调用之前,需要准备好以下内容:1. 目标接口的URL位置区域2. 请求参数3. 相关的证书文件(如果需要进行HTTPS连接)四、实现步骤接下来,我们将通过以下步骤进行Post接口调用的实现:1. 导入相关的Java包需要导入相关的Java包,以便能够使用Java提供的API进行接口调用。

例如:```javaimport .HttpURLConnection;import .URL;import java.io.OutputStream;import java.io.BufferedReader;import java.io.InputStreamReader;```2. 创建URL对象使用目标接口的URL位置区域创建一个URL对象,例如:```javaURL url = new URL("xxx");```3. 打开连接使用URL对象打开一个HttpURLConnection连接,并设置相关属性,例如:```javaHttpURLConnection conn = (HttpURLConnection)url.openConnection();conn.setRequestMethod("POST");conn.setDoOutput(true);```4. 设置请求参数如果需要传递请求参数,可以通过OutputStream设置,例如: ```javaString params = "param1=value1param2=value2";OutputStream os = conn.getOutputStream();os.write(params.getBytes());os.flush();```5. 发起请求调用connect()方法发起请求,并获取返回的结果,例如:```javaconn.connect();int responseCode = conn.getResponseCode();```6. 处理返回结果如果请求成功,可以通过InputStreamReader和BufferedReader读取返回的结果,例如:```javaif (responseCode == 200) {BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));String line;while ((line = br.readLine()) != null) {System.out.println(line);}br.close();}```五、总结通过上述步骤,我们实现了使用Java API进行Post接口调用的示例。

java调用api接口实例

java调用api接口实例

java调用api接口实例
java调用api接口实例
一、实现背景
在开发系统应用程序时,经常需要调用第三方系统提供的API接口,以获取特定的数据或服务。

本文介绍了一个Java调用API接口的实例,以帮助读者学习如何在Java中调用API接口的步骤。

二、实现过程
1、安装JDK
调用API接口需要使用Java语言,所以在开始之前,我们需要先安装JDK(Java Development Kit)。

JDK是用于开发Java应用程序的开发环境,包括了Java虚拟机(JVM)和Java类库,可用于运行Java程序。

2、创建Java项目
创建一个新的Java项目,在项目中创建一个Java类,可以使用任何合适的IDE(Integrated Development Environment)进行开发,比如Eclipse、NetBeans、IntelliJ IDEA等。

3、导入API jar包
第三方系统提供的API接口可能会提供jar包,可以将jar包导入到项目中,以便能够访问第三方系统的API接口。

4、编写API调用代码
创建一个新的Java类,在该Java类中编写API调用代码,将API接口到项目中的jar包分别导入即可。

5、测试
测试调用API接口的结果,可以打印出返回的JSON数据,以查看返回的结果及数据是否正确。

三、总结
本文介绍了一个简单的Java调用API接口的实例,首先需要安装JDK,然后创建一个新的Java项目,接着导入API jar包到项目中,之后编写API调用代码,最后测试调用API接口的结果。

java短信验证码登录功能设计与实现

java短信验证码登录功能设计与实现

java短信验证码登录功能设计与实现⽬录前⾔业务案例业务关键点剖析短信验证码功能实现思路有效期问题操作步骤前⾔现在不管是各类的⽹站,还是⼤⼩社交app,登录⽅式是越来越多了,其中基于短信验证码的登录可以说是各类app必不可少的⽅式,短信验证码登录以其⾼效,安全,便捷等特性受到许多⽤户的青睐业务案例如下所⽰,是⼀个⼤家熟知的采⽤短信登录的⼊⼝输⼊⼿机号之后,出现如下效果,输⼊⼿机上⾯收到的验证码之后,就可以正常登录了业务关键点剖析以上是⼀个正常的使⽤短信验证码登录的业务流程,在实际开发中,需要考虑的因素更多了,⽐如:验证码位数如何验证码如何存储如何预防短信被刷倒计时功能,前后端如何配合其实来说,短信验证码功能并不难,难得是如何做到业务场景的全⾯覆盖和功能细节上⾯的考虑短信验证码功能实现思路⼩编结合实际经验和调研,⽬前⽐较流⾏的做法是,使⽤redis做短信验证码,想必说到这⾥,懂⾏的同学们应该猜到了完整的业务逻辑⼤概如下:依据这个业务逻辑的实现思路,我们⼤致可以理清代码的编写逻辑,在⼩编开发过程中,其中有⼀个点遇到了⼀点梗,就是关于验证码的有效期的问题,主要考虑下⾯2点:后端存储验证码有效期时长前端页⾯倒计时和后端有效期的关系有效期问题下⾯我们编写代码来演⽰下完整的过程前置准备:搭建⼀个springboot⼯程操作步骤1、导⼊核⼼依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.2.1.RELEASE</version></dependency>@Servicepublic class SmsServiceImpl implements SmsService {public static final String VERIFY_CODE = "login:verify_code:";@Autowiredprivate DbUserMapper dbUserMapper;@Autowiredprivate RedisTemplate<String,String> redisTemplate;@Overridepublic String getSmsVerifyCode(String phone) {if (StringUtils.isEmpty(phone)) {throw new RuntimeException("⽤户⼿机号为空");}QueryWrapper queryWrapper = new QueryWrapper();queryWrapper.eq("mobile",phone);DbUser dbUser = dbUserMapper.selectOne(queryWrapper);if(dbUser == null){throw new RuntimeException("⽤户不存在");}String smsVerifyCode = getSmsVerifyCode();String smsCodeKey = VERIFY_CODE + dbUser.getUserId();String existedSmsCode = redisTemplate.opsForValue().get(smsCodeKey);//如果验证码已经存在时if (StringUtils.isNotEmpty(existedSmsCode)) {Long expireTime = redisTemplate.opsForValue().getOperations().getExpire(smsCodeKey);long lastTime = 60 * 3 - expireTime;//三分钟内验证码有效,1分钟到3分钟之间,⽤户可以继续输⼊验证码,也可以重新获取验证码,新的验证码将覆盖旧的 if(lastTime > 60 && expireTime >0){//调⽤第三⽅平台发短信,只有短信发送成功了,才能将短信验证码保存到redisSystem.out.println("此处调⽤短信发送逻辑......");redisTemplate.opsForValue().set(smsCodeKey, smsVerifyCode, 60 * 3, TimeUnit.SECONDS);System.out.println("短信验证码:" + smsVerifyCode);}//⼀分钟之内不得多次获取验证码if(lastTime < 60){throw new RuntimeException("操作过于频繁,请⼀分钟之后再次点击发送");}}else {//调⽤notify服务发送短信,只有notify的短信发送成功了,才能将短信验证码保存到redisSystem.out.println("此处调⽤短信发送逻辑......");System.out.println("短信验证码:" + smsVerifyCode);redisTemplate.opsForValue().set(smsCodeKey, smsVerifyCode, 60 * 3, TimeUnit.SECONDS);}return smsVerifyCode;}/*** 随机获取6位短信数字验证码** @return*/public static String getSmsVerifyCode() {Random random = new Random();String code = "";for (int i = 0; i < 6; i++) {int rand = random.nextInt(10);code += rand;}return code;}}⾸次输⼊⼿机号,获取验证码时,后端设置验证码有效期为3分钟,前端倒计时1分钟1分钟之内,⽤户不能第⼆次获取验证码,1分钟之后,⽤户可以重新获取验证码超过1分钟后,同⼀个⽤户再次点击获取验证码时,后端需主动移除redis存储的上⼀次验证码3分钟有效期内,⽤户可随时输⼊第⼀次的验证码进⾏登录登录成功后,登录接⼝需主动移除redis中的验证码以上为验证码的核⼼业务⽅法,下⾯再编写⼀个登录的⽅法,当基础校验和验证码校验通过后,即可登录 @Overridepublic String login(String userId, String smsCode) {if (StringUtils.isEmpty(userId)) {throw new RuntimeException("⽤户ID必传");}if (StringUtils.isEmpty(smsCode)) {throw new RuntimeException("验证码不能为空");}QueryWrapper queryWrapper = new QueryWrapper();queryWrapper.eq("user_id",userId);DbUser dbUser = dbUserMapper.selectOne(queryWrapper);if(dbUser == null){throw new RuntimeException("⽤户不存在");}//校验验证码String smsCodeKey = VERIFY_CODE + dbUser.getUserId();String verifyCode = redisTemplate.opsForValue().get(smsCodeKey);if (StringUtils.isEmpty(verifyCode)) {throw new RuntimeException("短信验证码不存在或已过期");}if (!StringUtils.equals(smsCode, verifyCode)) {throw new RuntimeException("短信验证码错误");}//TODO 其他待验证的登录业务逻辑System.out.println("执⾏其他业务......");System.out.println("登录成功");//最后清理下验证码if(redisTemplate.hasKey(smsCodeKey)){redisTemplate.delete(smsCodeKey);}return "login success";}@RestControllerpublic class SmsController {@Autowiredprivate SmsService smsService;@GetMapping("get/sms_code")public String getSmsVerifyCode(@RequestParam("phone") String phone){return smsService.getSmsVerifyCode(phone);}/*** 登录* @param userId* @param smsCode* @return*/@GetMapping("/login")public String login(@RequestParam("userId") String userId,@RequestParam("smsCode") String smsCode){ return smsService.login(userId,smsCode);}}启动redis服务,启动项⽬,数据库提前准备⼀条数据场景测试1:获取验证码调⽤登录接⼝,使⽤上⾯的验证码:场景测试2:1分钟内多次获取验证码第⼀次获取验证码再次获取验证码超过1分钟少于3分钟内,再次获取验证码,得到新的验证码,同时redis中存储的是最新的验证码场景测试3:登录输⼊错误验证码总体来说,使⽤redis实现短信验证码登录的功能不算太复杂,主要是需要全⾯的考虑到各⾃使⽤场景即可到此这篇关于java短信验证码登录功能设计与实现的⽂章就介绍到这了,更多相关java短信验证码登录内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。

java使用虚拟号接收短信的方法

java使用虚拟号接收短信的方法

java使用虚拟号接收短信的方法Java使用虚拟号接收短信的方法介绍在一些场景中,我们可能需要使用虚拟号码来接收短信,例如防止恶意注册、验证码验证等。

本文将介绍几种在Java中使用虚拟号码接收短信的方法。

方法一:第三方接口使用第三方接口是一种简单快捷的方法,不需要自己搭建接口服务。

以下是使用第三方接口的具体步骤:1.获取接口的API文档和参数说明;2.注册并获取access_token;3.调用发送短信的API,传入相应参数;4.解析API返回的结果,获取短信内容。

注意:使用第三方接口需要注意接口的稳定性和安全性。

方法二:使用短信网关接收短信通过使用短信网关接收短信,我们可以自己搭建接口服务,控制更加灵活。

以下是使用短信网关接收短信的具体步骤:1.搭建短信接口服务,可以使用Spring Boot等框架;2.调用短信网关的API,传入手机号码和短信内容;3.短信网关将收到的短信内容回调到你的接口服务;4.在接口服务中解析回调的短信内容,获取验证码或其他信息。

注意:使用短信网关接收短信需要自己搭建接口服务,并具备一定的开发能力和服务器资源。

方法三:使用模拟短信接口使用模拟短信接口是一种简单的方法,可以用于开发和测试阶段,但不适合在正式环境中使用。

以下是使用模拟短信接口的具体步骤:1.使用Java的Mock框架或编写模拟接口类;2.模拟短信接口类中保存短信内容和对应的手机号码;3.在代码中通过调用模拟接口类的方法来获取短信内容。

注意:使用模拟短信接口只能用于开发和测试,无法接收真实的短信。

总结本文介绍了三种Java使用虚拟号接收短信的方法:第三方接口、使用短信网关接收短信和使用模拟短信接口。

不同的方法适用于不同的场景,请根据实际需求选择合适的方法来实现。

无论选择哪种方法,都需要注意接口的稳定性和安全性,以确保短信的正常接收和使用。

方法一:第三方接口使用第三方接口是一种简单快捷的方法,不需要自己搭建接口服务。

调用阿里云接口实现短信消息的发送源码——CSDN博客

调用阿里云接口实现短信消息的发送源码——CSDN博客

调⽤阿⾥云接⼝实现短信消息的发送源码——CSDN博客在调⽤阿⾥云接⼝之前⾸先需要购买接⼝,获得accessKeySecret,然后使⽤下列代码就可以直接调⽤了!!/*** @Title: TestPhoneVerification.java* @Package org.test* @Description: TODO该⽅法的主要作⽤:* @author A18ccms A18ccms_gmail_com* @date 2017-7-1 下午8:19:35* @version V1.0*/package org.test;import java.util.Random;import com.aliyuncs.DefaultAcsClient;import com.aliyuncs.IAcsClient;import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;import com.aliyuncs.exceptions.ClientException;import com.aliyuncs.exceptions.ServerException;import com.aliyuncs.profile.DefaultProfile;import com.aliyuncs.profile.IClientProfile;/**** 项⽬名称:facephoto2* 类名称:TestPhoneVerification* 类描述:* 创建⼈:Mu Xiongxiong* 创建时间:2017-7-1 下午8:19:35* 修改⼈:Mu Xiongxiong* 修改时间:2017-7-1 下午8:19:35* 修改备注:* @version**/public class TestPhoneVerification {public static void main(String[] args) throws ServerException, ClientException {// 设置超时时间-可⾃⾏调整System.setProperty(".client.defaultConnectTimeout", "20000");System.setProperty(".client.defaultReadTimeout", "20000");// 初始化ascClient需要的⼏个参数final String product = "Dysmsapi";// 短信API产品名称final String domain = "";// 短信API产品域名// 替换成你的AKfinal String accessKeyId = "LTAIXhKAji7WzEFx";// 你的accessKeyId,参考本⽂档步骤2final String accessKeySecret = "7mYMnzCGZ";// 你的accessKeySecret,参考本⽂档步骤2// 初始化ascClient,暂时不⽀持多regionIClientProfile profile = DefaultProfile.getProfile("cn-hangzhou",accessKeyId, accessKeySecret);DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product,domain);IAcsClient acsClient = new DefaultAcsClient(profile);// 组装请求对象SendSmsRequest request = new SendSmsRequest();// 必填:待发送⼿机号。

Java实现短信验证码和国际短信群发功能的示例

Java实现短信验证码和国际短信群发功能的示例

Java实现短信验证码和国际短信群发功能的⽰例最近由于公司的业务拓展,需要给国外⽤户发送国际短信,像西班⽛、葡萄⽛、意⼤利这些国家都要发,还有中国的⾹港、澳门、台湾(港澳台)这些地区也要发,不过现在已经有许多公司提供国际短信的业务了,之前使⽤过云⽚的验证码业务,顺便看到他们也有国际短信的业务,并且更重要的是,不需要修改任何代码,只要添加下国际短信模板,就可以直接使⽤之前的代码继续发送国际短信,简直太⽅便了。

废话不多说,直接上代码。

/*** Created by bingone on 15/12/16.*/import org.apache.http.HttpEntity;import ValuePair;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.CloseableHttpResponse;import org.apache.http.client.methods.HttpPost;import org.apache.http.impl.client.CloseableHttpClient;import org.apache.http.impl.client.HttpClients;import org.apache.http.message.BasicNameValuePair;import org.apache.http.util.EntityUtils;import java.io.IOException;import .URISyntaxException;import .URLEncoder;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;/*** 短信http接⼝的java代码调⽤⽰例* 基于Apache HttpClient 4.3** @author songchao* @since 2015-04-03*/public class JavaSmsApi {//查账户信息的http地址private static String URI_GET_USER_INFO = "https:///v2/user/get.json";//智能匹配模板发送接⼝的http地址private static String URI_SEND_SMS = "https:///v2/sms/single_send.json";//模板发送接⼝的http地址private static String URI_TPL_SEND_SMS = "https:///v2/sms/tpl_single_send.json";//发送语⾳验证码接⼝的http地址private static String URI_SEND_VOICE = "https:///v2/voice/send.json";//绑定主叫、被叫关系的接⼝http地址private static String URI_SEND_BIND = "https:///v2/call/bind.json";//解绑主叫、被叫关系的接⼝http地址private static String URI_SEND_UNBIND = "https:///v2/call/unbind.json";//编码格式。

java 调用第三方接口传递数据的方法

java 调用第三方接口传递数据的方法

标题:Java调用第三方接口传递数据的方法一、背景介绍在当今信息技术高速发展的时代,各类软件系统都需要与外部系统进行数据交换,实现各种业务功能。

而Java作为一种广泛应用于企业级应用开发的编程语言,也经常需要调用第三方接口传递数据。

本文将介绍如何使用Java来调用第三方接口传递数据的方法。

二、选择合适的第三方接口1. 了解第三方接口的功能和需求在选择要调用的第三方接口时,首先要仔细了解该接口的功能和需求。

确定接口所提供的服务是否符合自己的业务需求,以及接口文档和使用方式是否符合自己的开发技术栈和能力。

2. 评估接口的稳定性和安全性在选择第三方接口时,还需要评估接口的稳定性和安全性。

了解该接口的服务质量和可靠性如何,以及接口提供商的信誉和实力是否可靠。

同时还需要了解接口的安全性措施,确保数据传输过程中的安全性。

三、使用Java调用第三方接口传递数据1. 选择合适的Java HTTP客户端库在Java中调用第三方接口,一般会使用HTTP协议进行数据传输。

为了方便地与第三方系统进行HTTP通信,可选择合适的Java HTTP客户端库,例如Apache HttpClient、OKHttp等。

2. 构建HTTP请求参数和请求头在调用第三方接口前,需要构建HTTP请求参数和请求头。

根据接口文档和要传递的数据,构建相应的请求参数,并设置请求头信息,包括认证信息、数据格式等。

3. 发起HTTP请求并处理响应通过选择的Java HTTP客户端库,可发起HTTP请求,并获取到第三方接口的响应数据。

接收到响应后,需要对响应进行合理处理,包括解析响应数据、处理异常情况等。

四、处理数据传输中的异常情况1. 超时和网络异常处理在数据传输过程中,常常会遇到网络超时、连接异常等情况。

为了保证系统的稳定性和安全性,需要针对这些异常情况进行合理的处理,例如设置合理的超时时间、进行网络重试等。

2. 处理第三方接口的异常响应在调用第三方接口时,往往会收到接口返回的异常响应。

java实现短信验证码5分钟有效时间

java实现短信验证码5分钟有效时间

java实现短信验证码5分钟有效时间本⽂实例为⼤家分享了java实现短信验证码5分钟有效时间,供⼤家参考,具体内容如下实现⼀个发送短信验证码的请求,要求5分钟之内重复请求,返回同⼀个验证码。

⽹上可找到⼏种⽅案:如,存储数据库或缓存中。

实现起来⽐较⿇烦,舍弃;另⼀种⽅式即本例,使⽤session存储。

其他⽅式,暂未进⼀步了解。

实现步骤:(springmvc)1、controller中,获取session对象,取code,取不到新⽣成,并存储session中;2、单⼿机号发送量,判断并 +1 记⼊数据库;3、Timer定时器,设置新线程延时执⾏TimerTask任务(删除code)@RequestMapping(value = "sendMessage",method = RequestMethod.GET)public Object sendMessage(final HttpServletRequest request){String phone=request.getParameter("phone");int times=userService.messageSendToday(phone); //⼆次验证,单个⼿机号每⽇发送上限if(times <= MAX_PER_DAY){String checkCode=GenerateRandomCode.createRandomNumber(6);final HttpSession httpSession=request.getSession();httpSession.setAttribute("checkCode",checkCode);CheckCodeMessage checkCodeMessage=new CheckCodeMessage(phone,checkCode);try {HttpSender.batchSend(checkCodeMessage);//TimerTask实现5分钟后从session中删除checkCodefinal Timer timer=new Timer();timer.schedule(new TimerTask() {@Overridepublic void run() {httpSession.removeAttribute("checkCode");System.out.println("checkCode删除成功");timer.cancel();}},5*60*1000);} catch (Exception e) {e.printStackTrace();}return "redirect:/index.jsp";}}Timer定时任务://TimerTask实现5分钟后从session中删除checkCodefinal Timer timer=new Timer();timer.schedule(new TimerTask() {@Overridepublic void run() {httpSession.removeAttribute("checkCode");System.out.println("checkCode删除成功");timer.cancel();}},5*60*1000);以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

java 短信模板 占位符 处理

java 短信模板 占位符 处理

java 短信模板占位符处理在Java中处理短信模板的占位符通常可以通过字符串替换来实现。

在实际开发中,我们通常会使用String类的replace方法或者使用String.format方法来处理短信模板中的占位符。

首先,我们可以使用String类的replace方法来替换短信模板中的占位符。

例如,如果我们的短信模板中包含"{name}"和"{code}"这样的占位符,我们可以通过以下方式来替换:java.String template = "尊敬的{name},您的验证码是{code}";String name = "张三";String code = "123456";String message = template.replace("{name}",name).replace("{code}", code);System.out.println(message);上述代码中,我们首先定义了短信模板template,然后使用replace方法将{name}和{code}替换为具体的值,最后得到了替换后的短信内容。

另外,我们也可以使用String.format方法来处理短信模板中的占位符。

例如:java.String template = "尊敬的%s,您的验证码是%s";String name = "张三";String code = "123456";String message = String.format(template, name, code);System.out.println(message);在上述代码中,我们使用了String.format方法,其中%s表示占位符,后面的name和code分别对应了这两个占位符的具体值,最后得到了替换后的短信内容。

javaweb实现手机短信验证码登录实例

javaweb实现手机短信验证码登录实例

javaweb实现⼿机短信验证码登录实例java web实现⼿机短信验证码登录实例运⾏环境jdk7+tomcat7项⽬技术(必填)Servlet+Ajax+Bootstrap数据库⽂件我这⾥没⽤到数据库,⽐较简单,如果需要⽤到数据库不会的话可以私信我或者加我QQjar包⽂件jar包只有⼀个,在项⽬的lib⽂件夹下运⾏截图项⽬描述这个⼩案例呢⼤家可以在项⽬中⼩⼩的装个逼,本⼈在校⽣,反正在项⽬答辩的时候,看⼤家的反应还不错,哈哈。

本次案例呢⼤家不仅可以在登录的时候使⽤,另外注册的时候也可以⽤,⼤家⾃⾏决定,反正我在注册的时候⽤了,这次的案例没给⼤家敲注册,就简单写了个登录给⼤家分享⼀下。

没有使⽤任何框架,⽤了⼀个简单的Servlet,⾮常简单易懂,下载下来我的代码,只需要简单改⼏⾏代码就可以了,改成属于你⾃⼰的验证码就OK了!1、你需要登录秒嘀科技()这个官⽹去注册⼀个账号,这是我已经注册之后的是这个样⼦的,你需要做的就是,在开发者信息⾥⾯获得你⾃⼰的AUTH_TOK EN2、需要在配置管理中新建⼀个模板,这个模板就是发送验证码的模板,给⼤家看⼀下我的模板3、接着下载下来我的代码,导⼊开发⼯具之后,在java.aaa.util这个包中的GetMessageCode的类中,把我圈住的地⽅改成你⾃⼰的,我相信⼤家应该都能看懂,就不细说了,把我圈的地⽅改了就⾏了(ACCOUNT_SID和AUTH_TOKEN)最好就改这两个就好了;下⾯那个是要和你模板⾥⾯的对应的,上⾯说了,你需要⾃⼰新建⼀个模板,⽽我下⾯圈住那个就是和你模板⼀致,切记,⼀定要保持⼀致4、⼀切准备就绪之后,部署项⽬,启动项⽬,登录地址是:页⾯展⽰如下:验证码提⽰错误页⾯:(我收到的验证码是919805,我输⼊的,是919804,就会提⽰错误,当然输⼊正确就跳转成功页⾯)最后忘了跟⼤家说了,这个⽹站注册之后会赠送10元钱,⾜够⼤家学习使⽤了,所以不⽤担⼼需要充钱,放⼼⽤。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于JAVA的短信接口调用代码实例代码描述:基于JA V A的短信接口调用代码实例代码平台:聚合数据import java.io.BufferedReader;import java.io.DataOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.UnsupportedEncodingException;import .HttpURLConnection;import .URL;import .URLEncoder;import java.util.HashMap;import java.util.Map;import net.sf.json.JSONObject;/***短信API服务调用示例代码-聚合数据*在线接口文档:/docs/54**/public class JuheDemo {public static final String DEF_CHATSET = "UTF-8";public static final int DEF_CONN_TIMEOUT = 30000;public static final int DEF_READ_TIMEOUT = 30000;public static String userAgent = "Mozilla/5.0 (Windows NT 6.1) Appl eWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36";//配置您申请的KEYpublic static final String APPKEY ="*************************";//1.屏蔽词检查测public static void getRequest1(){String result =null;String url ="/sms/black";//请求接口地址Map params = new HashMap();//请求参数params.put("word","");//需要检测的短信内容,需要UTF8 URLENCODEparams.put("key",APPKEY);//应用APPKEY(应用详细页查询)try{result =net(url, params, "GET");JSONObject object = JSONObject.fromObject(result);if(object.getInt("error_code")==0){System.out.println(object.get("result"));}else{System.out.println(object.get("error_code")+":"+object. get("reason"));}} catch(Exception e) {e.printStackTrace();}}//2.发送短信public static void getRequest2(){String result =null;String url ="/sms/send";//请求接口地址Map params = new HashMap();//请求参数params.put("mobile","");//接收短信的手机号码params.put("tpl_id","");//短信模板ID,请参考个人中心短信模板设置params.put("tpl_value","");//变量名和变量值对。

如果你的变量名或者变量值中带有#&=中的任意一个特殊符号,请先分别进行urlencode编码后再传递,<a h ref="/news/index/id/50" target="_blank">详细说明></a> params.put("key",APPKEY);//应用APPKEY(应用详细页查询)params.put("dtype","");//返回数据的格式,xml或json,默认jsontry{result =net(url, params, "GET");JSONObject object = JSONObject.fromObject(result);if(object.getInt("error_code")==0){System.out.println(object.get("result"));}else{System.out.println(object.get("error_code")+":"+object. get("reason"));}} catch(Exception e) {e.printStackTrace();}}public static void main(String[] args) {}/**** @param strUrl 请求地址* @param params 请求参数* @param method 请求方法* @return 网络请求字符串* @throws Exception*/public static String net(String strUrl, Map params,String method) th rows Exception {HttpURLConnection conn = null;BufferedReader reader = null;String rs = null;try{StringBuffer sb = new StringBuffer();if(method==null|| method.equals("GET")){strUrl = strUrl+"?"+urlencode(params);}URL url = new URL(strUrl);conn = (HttpURLConnection) url.openConnection();if(method==null|| method.equals("GET")){conn.setRequestMethod("GET");}else{conn.setRequestMethod("POST");conn.setDoOutput(true);}conn.setRequestProperty("User-agent", userAgent);conn.setUseCaches(false);conn.setConnectTimeout(DEF_CONN_TIMEOUT);conn.setReadTimeout(DEF_READ_TIMEOUT);conn.setInstanceFollowRedirects(false);conn.connect();if(params!= null&& method.equals("POST")) {try{DataOutputStream out = new DataOutputStream(conn.get OutputStream());out.writeBytes(urlencode(params));} catch(Exception e) {// TODO: handle exception}}InputStream is = conn.getInputStream();reader = new BufferedReader(new InputStreamReader(is, DEF_CH ATSET));String strRead = null;while((strRead = reader.readLine()) != null) {sb.append(strRead);}rs = sb.toString();} catch(IOException e) {e.printStackTrace();} finally{if(reader != null) {reader.close();}if(conn != null) {conn.disconnect();}}return rs;}//将map型转为请求参数型public static String urlencode(Map<String,Object>data) {StringBuilder sb = new StringBuilder();for(Map.Entryi : data.entrySet()) {try{sb.append(i.getKey()).append("=").append(URLEncoder.enc ode(i.getValue()+"","UTF-8")).append("&");} catch(UnsupportedEncodingException e) {e.printStackTrace();}}return sb.toString();}}。

相关文档
最新文档