JAVA 는 제3자 플랫폼 을 이용 하여 문자 인증 코드 를 발송 합 니 다.
본 고 는 등록 을 예 로 들 어 SpringMVC+Spring+Mybatis 프레임 워 크 를 바탕 으로 이 문자 인증 코드 기능 을 완성 했다.
문자 인증 코드 를 보 내 는 원 리 는 무 작위 로 6 자리 숫자 를 생 성하 여 이 6 자리 숫자 를 session 에 저장 하고 클 라 이언 트 는 sessionid 를 통 해 대응 하 는 session 을 판단 하 며 사용자 가 입력 한 인증 코드 를 session 기록 의 인증 코드 와 비교 하 는 것 이다.
광고 혐의 를 막 기 위해 서 는 문자 플랫폼 이 어디 인지 말 하지 않 겠 습 니 다.
일반적인 제3자 문자 플랫폼 은 모두 자신 들 의 문자 인 터 페 이 스 를 가지 고 그들의 인 터 페 이 스 를 조금 만 읽 으 면 자신의 수 요 를 만족 시 킬 수 있다.
먼저 문자 플랫폼 인터페이스 코드 를 보 여 줍 니 다.여 기 는 jar 가방 세 개commons-logging-1.1.1.jar,commons-httpclient-3.1.jar,commons-codec-1.4.jar를 다운로드 해 야 합 니 다.
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.sms.webchinese.cn"); //
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"," :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();
}
}
우리 가 보 내 고 싶 은 메 시 지 는 이 줄 코드 안에 있 습 니 다.NameValuePair[]data={new NameValuePair("Uid","본 사이트 사용자 이름"),new NameValuePair("Key","인터페이스 보안 키"),new NameValuePair("smsMob","핸드폰 번호"),new NameValuePair("smsText","인증 코드:8888")};이 인터페이스 에는 또 하나의 result 메시지 가 있 는데 그 역할 은 사용자 에 게 문자 메시지 가 보 낸 상 태 를 알려 주 는 것 이다.1 은 발송 성공 을 나타 내 고 다른 0 보다 작은 것 은 실패 이다.여기 서 1 이 성공 이라는 것 만 알 면 된다.
우리 의 실제 작업 에서 인증 코드 는 반드시 우리 스스로 생 성 해 야 한다.result 정 보 를 인증 코드 와 함께 얻 으 면 HashMap 으로 집합 할 생각 을 하기 쉽다.다음은 프로젝트 자체 의 요구 로 인터페이스 에 대한 변경 입 니 다.
import java.util.HashMap;
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;
import com.yuetile.utils.VerifyingCodeGenerator;
public class SendMsg_webchineseController {
public static HashMap<String,String> getMessageStatus(String phone)throws Exception{
HashMap<String,String> m=new HashMap<String,String>();
HttpClient client = new HttpClient();
PostMethod post = new PostMethod("http://gbk.sms.webchinese.cn");
post.addRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=gbk");//
String code=VerifyingCodeGenerator.generate();//
NameValuePair[] data ={ new NameValuePair("Uid", "****"),new NameValuePair("Key", "******"),new NameValuePair("smsMob",phone),new NameValuePair("smsText"," , :"+code+""+" 5 ")};
m.put("code", code);
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); //
m.put("result", result);
post.releaseConnection();
return m;
}
}
***는 제3자 플랫폼 에 등 록 된 계 정 비밀 번 호 를 나 타 냅 니 다.ACTION 층:
/**
* @author hang
* @Decription , , Session
* @param POST
* @return
* @throws Exception
*/
@ResponseBody
@RequestMapping(value = UrlDefine.Register.CHECKMESSAGEWORK, method = RequestMethod.POST)
public Object SendCheckMessage(HttpServletRequest request, @RequestBody UserBean u)
throws Exception {
String message = " ";
String phone=u.getTelephone(); //
UserBean user = userService.getByPhone(phone);
if (user != null) {
message = " ";
return new Response(Status.ERROR, message);
} else {
HashMap<String, String> m = SendMsg_webchineseController.getMessageStatus(phone); //
String result = m.get("result"); // result
if (result.trim().equals("1")) { // 1,
String code = m.get("code"); //
logger.info(" :"+code); //
HttpSession session = request.getSession(); // session
session.setAttribute("code", code); // session
session.setMaxInactiveInterval(60 * 5);// 5
return new Response(Status.SUCCESS, message);
} else {
message = " ";
return new Response(Status.ERROR, message);
}
}
}
그럼 발송 성공 입 니 다.테스트:
POStman 을 이용 하여 로 컬 에서 테스트 하기:
결과:
여기 로 발송 성공.
이상 은 본 고의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.또한 저 희 를 많이 지지 해 주시 기 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.